To build: just run make in the c/ subdirectory of the repo. This builds the mlr executable as well as running all unit and regression tests.

This default make target is also appropriate to run before a commit. (This is self-service manual CI. https://github.com/johnkerl/miller/issues/15 will automate this.)

To install, run make install after editing the install target in the makefile to configure the destination. (See https://github.com/johnkerl/miller/issues/9 which will allow for a configure --install-dir=... option.)

If you are doing development of Miller, you can optionally run make dev in the c/ subdirectory. This runs all the same regression tests, but with the addition of two niceties: it also updates the tags file (requires ctags), and runs the unit tests with valgrind which can help illuminate memory issues.

Prebuilt executables: Please see https://github.com/johnkerl/miller/releases where there are builds for OSX Yosemite, Linux i686 (statically linked), and Linux x86-64 (dynamically linked).

C compiler: I normally use gcc: POKI_CARDIFY(gcc -std=gnu99 -Wall -Werror -O3 ...)HERE (see the makefile for details) and I’ve done so successfully on Ubuntu 12.04 LTS, SELinux, and Darwin (MacOS Yosemite). I also use valgrind for detection of memory leaks and runtime memory-access errors.

I’ve also used clang on MacOS Yosemite. To use clang, one may edit c/Makefile as well as c/dsls/Makefile and change CC=gcc to CC=clang — or, export CC=clang ane make -e. (If you encounter issues I haven’t, please open an issue at https://github.com/johnkerl/miller.)

Required external dependencies: These are necessary to produce the mlr executable.

Optional external dependencies:

Internal dependencies: These are included within the Miller source tree and do not need to be separately installed (and in fact any separate installation will not be picked up in the Miller build):

Testing: Miller uses MinUnit unit-test for key classes including lrec_t. The remaining coverage (which aims to be exhaustive, although this is a work in progress) is regression coverage of Miller using all data-transform options and all I/O-format pairs.

License: Two-clause BSD license https://github.com/johnkerl/miller/blob/master/LICENSE.txt.