Installing Hare on FreeBSD
Installing Hare on FreeBSD
There is a port hare-lang, but as Drew DeVault answered my question "Just want to know - is this port official hare distribution and is it updated?":
"We do not maintain downstream packages. It's official if that's an official source for your distro."
So I found a good manual on how to do this from repos:
There are 4 total things you need to install to get Hare working on FreeBSD, 2 pre-requisites and 2 Hare packages. It's possible that you already have the pre-requisites setup, in which case you can skip the step, but they are uncommon enough that I'm including them here.
I did the installation in a fresh jail for isolation, but of course you can install where ever you like, the steps are the same.
Initial setup
First you'll need git:
pkg install git
Since we're installing from source, we need somewhere to put the source, so I created /usr/local/src
mkdir -p /usr/local/src
cd /usr/local/src
Now we can start building packages.
Pre-requisites
QBE
QBE is a compiler backend used by Hare.
First clone the repository:
git clone git://c9x.me/qbe.git
cd qbe
Then build and install:
make
make install
cd ..
scdoc
scdoc is a man page generator, first clone:
git clone https://git.sr.ht/~sircmpwn/scdoc
cd scdoc
scdoc uses syntax in its Makefile not supported by BSD make so you'll need gmake:
pkg install gmake
Then use gmake to build and install:
gmake
gmake install
cd ..
Hare
Now with the prereqs you can install Hare itself, first the bootstrap compiler:
git clone https://git.sr.ht/~sircmpwn/harec
cd harec
Copy the FreeBSD config from the configs folder:
cp configs/freebsd.mk config.mk
Then build and install:
make
make install
cd ..
Last up is the main package:
git clone https://git.sr.ht/~sircmpwn/hare
cd hare
Like last time, copy over the FreeBSD build config:
cp configs/freebsd.mk config.mk
Before building, Hare depends on as
, an assembler, which you can get from binutils:
pkg install binutils
And with that you should be able to build and install:
make
make install
cd ..
Hello world
First, let's do a simple Hello world.
echo 'use fmt;
export fn main() void = {
fmt::println("Hello world!")!;
};' > main.ha
Which you can now run with the hare run
command:
hare run main.ha
It will take a second the first time, but you should then see the print out. To build to an executable use the build command instead:
hare build -o helloworld main.ha
./helloworld
And that's it, I hope this is helpful for FreeBSD users out there.