Building and installing ATS on FreeBSD
Wednesday, 30th April, 2014
ATS is a statically typed functional (eager) programming language with dependent types and linear types. It “can be as efficient as C/C++ both time-wise and memory-wise”.
Building and installing on FreeBSD is mostly straightforwardly following the documentation, but three things tripped me up:
GNU make vs BSD make
The Makefiles assume GNU make and won’t run with BSD make. However, on FreeBSD, “make” is BSD make, and GNU make is “gmake”. The way the Makefiles are written (e.g., make is called explicitly from within the Makefiles) seemed to rule out just aliasing gmake as make, so I (as root) hid (BSD) make and symlinked “make” to gmake.
By default the Makefiles compile with gcc, although there is an option to compile with clang. My FreeBSD set up had both, with clang as the default compiler (at cc). However, although gcc was installed, it was at “gcc47” and there was no symlink from “gcc”. I added the symlink.
In the install_files sections of the top-level Makefile, the install commands have a space between the -m flag and the actual mode, e.g.:
105 install_files_1: bin/patscc ; \ 106 $(INSTALL) -T -m 755 $< $(PATSLIBHOME2)/bin/patscc && echo $<
This tripped up install, which reads that 755 as a separate argument. This is fixed by removing the space, i.e.:
105 install_files_1: bin/patscc ; \ 106 $(INSTALL) -T -m755 $< $(PATSLIBHOME2)/bin/patscc && echo $<
There are five points which need to be changed.
(n.b.: the Makefile may have been updated by the time you read this.)
With all that done, and a “Hello world!” program compiled and run, I am ready to adventure into dependent and linear types!