SkillAgentSearch skills...

Jove

Jonathan's Own Version of Emacs : a venerable (1982), fast, small Emacs clone that was originally written for 2.8BSD on PDP-11.

Install / Use

/learn @jonmacs/Jove
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

##########################################################################

This program is Copyright (C) 1986-2002 by Jonathan Payne. JOVE is

provided by Jonathan and Jovehacks without charge and without

warranty. You may copy, modify, and/or distribute JOVE, provided that

this notice is included in all the source files and documentation.

##########################################################################

[Updated in 2023 Nov]

JOVE on UNIX/Linux/MacOS X/*BSD/CygWin Systems

Getting JOVE

JOVE releases are available at http://github.com/jonmacs/jove/ in various source (github's automatically packed tar.gz, or a manually packed .tgz which are essentialy identical, as well as a manually packed .zip or .exe for MS-DOS), and some binary forms for various OS architectures (Linux, DOS, Windows). All distributions include formatted manuals (PDF, text) -- in the doc/ subdirectory for source and some binary, or in share/doc/jove, share/jove or man/man1 (relative to a top-level installation directory, such as /usr or /usr/local)

For information about other systems, see the other README files in the source, zip or exe distributions: README.dos for MS-DOS README.win for MS Win32

Quick Summary of Installation

Unpack the tar file somewhere convenient and cd into it: tar xzf jove-VERSION.tgz cd jove-VERSION For old Unix, gunzip this the file on a modern platform, them copy the tar over and use tar xf jove-VERSION.tgz

Ensure you have the tools required to build Jove. You need a C compiler (classic Unix cc, gcc or clang should work), the make utility, and basic headers for libc, which may require extra packages on some Linux distributions. Debian, Ubuntu, Mint: apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends gcc make ncurses-dev pkg-config exuberant-ctags Alpine: apk update && apk add gcc make musl-dev ncurses-dev pkgconfig ctags MacOSX/Darwin: brew install make ncurses Nix: nix-shell -p gnumake Arch: pacman -Sy gcc make # pkgconf ncurses Gentoo: # comes with gcc and make and headers by default!

For many modern systems (Linux, various BSDs, MacOSX/Darwin, Solaris, OpenIndiana), an auxiliary script called jmake.sh is provided that auto-detects what the SYSDEFS and EXTRALIBS should be, and then invokes 'make' without any manual configuration needed: just specify JOVEHOME to change where you want jove installed (default JOVEHOME is /usr/local, which puts the binaries in $JOVEHOME/bin, manuals in $JOVEHOME/man/man1, other documents and help and config in $JOVEHOME/share/jove, helper programs in $JOVEHOME/lib/jove e.g. to put jove in /opt/jove/{bin,share,...}

 ./jmake.sh JOVEHOME=/opt/jove # to build
 ./jmake.sh JOVEHOME=/opt/jove install # to install

To build a relocatable version of Jove (i.e. an install directory that can be copied or moved freely to other paths) in /foo

 ./jmake.sh DESTDIR=/foo/ JOVEHOME= JBINDIR= JSHAREDIR=doc JLIBDIR= clean install

If jmake.sh does not work, please do file a bug, indicating your system. One can also pass SYSDEFS, TERMCAPLIB and EXTRALIBS (and other variables in the Makefile) by hand.

modern (Net|Open|Free)BSD/Darwin/Mac OS X: use the first of the following that works: make install make SYSDEFS=-DXBSD install make SYSDEFS="-DBSDPOSIX_STDC -DUSE_OPENPTY -DHAS_LIBUTILS_H" LDLIBS=-lutil install make SYSDEFS="-DBSDPOSIX_STDC" install make SYSDEFS="-DBSDPOSIX" install

classic BSD4.[0123]: make SYDEFS=-DBSD4 JTMPDIR=/usr/tmp JRECDIR=/usr/preserve MKDIRP=mkdir LDLIBS=-ltermcap install

Linux: Using RPM (if sufficiently close to Red Hat; make sure RPMHOME is correct in the Makefile, that you have the rpm-build package, a compiler and and use: make rpm and them install the resulting rpm from $HOME/rpmbuild/RPMS with "rpm -i"

To compile and install from source, set JOVEHOME appropriately. By default, Jove has internal support for ansi/vt[1234]xx terminals that are emulated by every modern desktop environment (i.e xterm, rxvt, st, vte, konsole, {gnome,mate}-terminal, ...), so unless you have some very special terminal, you should not need a general purpose terminal handling library like termcap or curses. But if you need one, the packages go by different names on various Linux. If you install pkgconf (for the pkg-config program) and the ncurses (which sometimes goes by names like ncursesw, ncurses-base, ncurses-dev, ncurses-devel, libncurses-dev, libtinfo-dev, sys-libs), that should be enough on most Linux systems. Otherwise, you can explicitly ask for it is using something like make SYSDEFS=-Duname LDLIBS=-lncursesw

If you link with one of the general terminal handling libraries rather than using Jove's builtin handling, then you will also need to ensure you have terminal descriptions, which are sometimes in separate packages (e.g. called ncurses-terminfo-base or ncurses-base or ncurses-term)

Older Linux may need either SYSDEFS=-DXLINUX or SYSDEFS=-DBSDPOSIX_STDC (but do test how interactive-shell works once built; the main issues are pty-handling, even if they seem to compile without error)

Solaris 5.1 or newer: make install

Other systems: Read comments about SYSDEFS settings below, check sysdep.h for recently tested system settings or old/sysdep.h for once-working but currently untested settings that will need to be copied into sysdep.h, or just set on the command-line with SYSDEFS="-D...", LDLIBS if needed.

Cross-Compiling:

If your cross-compiler for some target FOO is FOO-gcc, then you can probably cross-compile with env JMAKE_UNAME=FOO-gcc ./jmake.sh e.g. env JMAKE_UNAME=i686-w64-mingw32 ./jmake.sh or env JMAKE_UNAME=i486-linux-musl ./jmake.sh

More generally, the Jove Makefile has some support for cross-compiling. You need to set CC to the cross-compiler, but please do not override CFLAGS, which consists of SYSDEFS, (for any -I or -D cross-compiler options) and OPTFLAGS (for any optimizer flags or special cross-compiler options e.g. target arch).

For linking, you can set LDFLAGS (e.g. -L) or LDLIBS for the cross-linker for the target system, while you can set LOCALCC, LOCALCFLAGS, LOCALLDFLAGS, LOCALEXTRALIBS and LOCALEXT for the local host machine compiler and linker (usually none other than LOCALCC are needed, since they are used when locally building the setmaps program on the host, which is run to generate keys.c, which will then be cross-compiled for the target) e.g. make CC=/cross/bin/cc-armv7 SYSDEFS="-DLinux -DJTC" OPTFLAGS=-O2 LDFLAGS="-L/cross/lib" LDLIBS="-lutil" LOCALCC=cc

For another example, see README.win for cross-compiling using MinGW for a Windows target.

Please help us keep up with new systems. If your system isn't covered in jmake.sh or on in the SYSDEFS section of Makefile, tell us what works. If your system is covered, but the documented procedure doesn't work, tell us by filing a bug on http://github.com/jonmacs/jove

Full Story of Installation

JOVE does not use any automatic configuring mechanism other than the very simple jmake.sh script, which only works on modern Linux/*BSD/MacOSX/Darwin/Solaris. System-specific configuring is done by defining specific symbols from sysdep.h in SYSDEFS in the Makefile (in most situations it is handier to override definitions by supplying them on the make command line rather than the classic technique of editing the Makefile).

JOVE has been around for a long time, and a lot of care has been taken to make it work on many systems, new and old. For current systems, less configuring is require -- hurray for standards!

Makefile specifies paths for installing JOVE components (JOVEHOME, JSHAREDIR, JLIBDIR, JBINDIR, JMANDIR, MANEXT), tempfiles (JTMPDIR, JRECDIR), and the default shell (DFLTSHELL). Although the defaults are reasonable, you may wish to change them.

For many systems, you will need to change the definition of SYSDEFS. to the symbol that identifies your system's characteristics, using the notation for a macro-setting flag to the C compiler. For modern systems, that symbol is often the output of the uname command. For example, on a machine running NetBSD, use "SYSDEFS=-DNetBSD". The Makefile describes suitable settings of SYSDEFS for many configurations. If yours isn't mentioned, use "grep System: sysdep.h" to find all currently supported system configurations. If there is no canned configuration for your system, you will have to define a new symbol and edit sysdep.h suitably. See "sysdep.txt" for the possible set of system-dependent aspects that you can select/tune.

On some systems, you may need to change the flags passed to the compiler (SYSDEFS, OPTFLAGS) or the linker (LDFLAGS, LDLIBS). [These supersede the older Jove-specific conventions of defining OPTFLAGS, SYSDEFS, TERMCAPLIB, EXTRALIBS, which should still work]

Systems on which 4.17 was tested include the following (and their SYSDEFS and LDLIBS will usually be correctly set by the jmake.sh script that can be used to to invoke make with auto-guessed values)

The following explicit settings also work and may provide a guide to customization.

Cygwin 3.1.2 SYSDEFS=-DCYGWIN LDLIBS= # builtin vt100/xterm/rxvt etc support, no need for curses dependency

Darwin aka MacOS X onwards SYSDEFS=-DDarwin LDLIBS=-ltermcap

FreeBSD 12.1 SYSDEFS=-DFreeBSD LDLIBS="-ltermcap -lutil"

Linux (modern, glibc pty.h) SYSDEFS=-DLinux LDLIBS="-lncursesw -lutil"

Linux (recent, UNIX98 PTYS) SYSDEFS=-DXLINUX LDLIBS=-lncursesw

Linux (old, BSD PTYS) SYSDEFS=-DBSDPOSIX_STDC LDLIBS=-lncurses

NetBSD 8.1 SYSDEFS=-DNetBSD LDLIBS="-ltermcap -lutil"

OpenBSD 6.6 SYSDEFS=-DOpenBSD LDLIBS="-ltermcap -lutil"

SunOS5.1 onwards (Solaris/OpenIndiana/Illumos/Joyent) SYSDEFS=-DSunOS LDLIBS=-ltermcap

De

View on GitHub
GitHub Stars140
CategoryDevelopment
Updated29d ago
Forks9

Languages

C

Security Score

80/100

Audited on Feb 27, 2026

No findings