Installing ---------- To build and install spiped, run: # make BINDIR=/path/to/target/directory install To install man pages, add MAN1DIR=/path/to/man.1/directory to the command line (e.g., MAN1DIR=/usr/local/man/man1 on FreeBSD). Spiped should build and run on any IEEE Std 1003.1 (POSIX) compliant system which 1. Includes the Software Development Utilities option, 2. Has OpenSSL available via -lcrypto and #include , and 3. Provides /dev/urandom. Platform-specific notes ----------------------- - On OS X, the version of OpenSSL included with the operating system is outdated (0.9.8) and deprecated, and it is recommended that spiped be built with an updated version of OpenSSL. On OS X 10.11 "El Capitan", OpenSSL was removed entirely. After installing a newer version of OpenSSL, use CFLAGS="-I /path/to/openssl/headers" LDADD_EXTRA="-L /path/to/openssl/lib" to build spiped. Note that spiped will still build (on pre-10.11) if you set these options wrong: If you see warning: 'AES_set_encrypt_key' is deprecated during the build then spiped is still using the outdated version of OpenSSL from OS X. - On Cygwin the following command must be run before building spiped in order order to work around a bug in Cygwin's C library: sed -i.orig s/-D_POSIX_C_SOURCE=200809L// */Makefile Without this command, spiped will still build but it will crash. - On some platforms (Solaris, maybe others), additional compiler and/or linker options are required to find OpenSSL or system libraries; these can be provided by adding e.g., CFLAGS="-I/path/to/openssl/headers" (compiler option) or LDADD_EXTRA="-L/usr/sfw/lib -lsocket -lnsl" (linker option) to the make command line. - On Solaris, the command-line utilities in /usr/bin are not necessarily POSIX-compatible. According to standards(7), in order to use POSIX.1-2008 standard-conforming utilities, you must set your PATH so that certain directories (such as /usr/xpg4/bin/) take precedence over /usr/bin. Please check the documentation in your version of Solaris by: $ man standards and carefully read the "Utilities" section. - On some platforms (OpenBSD prior to 5.4, and possibly others) you will need to add #include at the start of lib/dnsthread/dnsthread.c libcperciva/util/sock_util.c proto/proto_conn.c spipe/main.c spipe/pushbits.c due to a POSIX-compliance bug on those platforms. - On some platforms (mostly Linuxes) it is possible to install OpenSSL libraries without the associated header files; the header files are usually in packages named "openssl-devel", "libssl-dev", or similar. - If your OS provides random bytes via some mechanism other than /dev/urandom, please make local changes to lib/util/entropy.c and notify the author. If spiped fails to build or run for other reasons, please notify the author. Updating build code and releasing --------------------------------- The POSIX-compatible Makefiles are generated via `make Makefiles` from the included (far more readable) BSD Makefiles. To run this target, you will need to have a BSD `make(1)` utility; NetBSD's `make(1)` is available for many operating systems as `bmake`. Release tarballs are generated via `make VERSION=x.y.z publish`, subject to the same caveat of needing a BSD-compatible make.