Nowadays, brew is much more popular. Here are instructions for m1 machines which have a different brew directory.

Use brew to install the required dependencies

$ brew install llvm readline libffi openssl

Modify the Makefile

The Makefile found in the src directory must be modified the following way:
PATH  := /opt/homebrew/opt/llvm@13/bin:$(PATH)
SHELL := env PATH=$(PATH) /bin/bash


CC = clang -I/opt/homebrew/include -I /opt/homebrew/opt/openssl@3/include -L/opt/homebrew/lib -L /opt/homebrew/opt/openssl@3/lib
PIL = ../pil  # pil
ASM = opt -O3  # llvm-as
LLC = llc
LINK = llvm-link
MAIN = -rdynamic -lc -lutil -lm -ldl -lreadline -lffi
SHARED = -dynamiclib -undefined dynamic_lookup
STRIP = : # strip
Basically, one needs to add the llvm installation to the PATH, fix the include directories and add those of openssl that is not symlinked because because macOS provides LibreSSL.


The /bin and /lib folders are not suitable for installation because they suppose that one can symlink them to /usr/bin and /usr/lib, which is now prevented by SIP.

Instead, I use a simple alias in my .zshrc:

alias pil=/Path/To/pil21/pil
alias vip=/Path/To/pil21/vip

12sep22    louisabraham