aboutsummaryrefslogtreecommitdiff

Nomsu makefile

To build, run make

To install, run make install

========= User-controlled variables ========

LUA= lua LUA_BIN= $(shell which $(LUA))

PREFIX= PACKAGEPATH= UNINSTALL_VERSION=

========= You shouldn’t need to mess with any of these variables below ================

MOONFILES= codeobj.moon errorhandling.moon files.moon nomsu.moon nomsucompiler.moon
syntaxtree.moon containers.moon bitops.moon parser.moon prettyerrors.moon
text.moon nomsudecompiler.moon nomsuenvironment.moon bootstrap.moon
builtinmetatables.moon colors.moon LUAFILES= codeobj.lua errorhandling.lua files.lua nomsu.lua nomsucompiler.lua
syntax
tree.lua containers.lua bitops.lua parser.lua prettyerrors.lua
text.lua nomsu
decompiler.lua nomsuenvironment.lua bootstrap.lua
builtin
metatables.lua colors.lua CORENOMFILES=$(shell cat lib/core/init.nom | sed -n ‘s;export “(.)”;lib/\1.nom;p’) lib/core/init.nom CORELUAFILES= $(patsubst %.nom,%.lua, $(CORENOMFILES)) COMPATNOMFILES=$(wildcard lib/compatibility/.nom) COMPATLUAFILES= $(patsubst %.nom,%.lua, $(COMPATNOMFILES)) TOOLNOMFILES= $(wildcard lib/tools/.nom) TOOLLUAFILES= $(patsubst %.nom,%.lua, $(TOOLNOMFILES)) LIBNOMFILES= $(wildcard lib/.nom) $(filter-out $(CORENOMFILES) $(TOOLNOMFILES) $(COMPATNOMFILES), $(wildcard lib//.nom)) LIBLUAFILES= $(patsubst %.nom,%.lua, $(LIBNOMFILES)) NOMFILES=$(CORENOMFILES) $(COMPATNOMFILES) $(TOOLNOMFILES) $(LIBNOMFILES) PEGFILES= $(wildcard nomsu.*.peg) GETVERSION= $(LUABIN) nomsu.lua –version

all: lua optimize optimize_extra

.PHONY: test test: lua optimize @printf “\033[1;4mRunning unoptimized tests…\033[0m\n” @$(LUABIN) nomsu.lua -O0 -t test $(CORENOMFILES) $(LIBNOMFILES) @printf “\n\033[1;4mRunning optimized tests…\033[0m\n” @$(LUABIN) nomsu.lua -O1 -t test $(CORELUAFILES) $(LIBLUAFILES)

%.lua: %.moon @moonc $<

%.lua: %.nom @$(LUA_BIN) nomsu.lua -c $<

.DELETEONERROR: version version: $(LUAFILES) $(CORENOMFILES) $(LIBNOMFILES) @$(LUABIN) nomsu.lua –version > version || exit

lua: $(LUA_FILES)

.PHONY: optimize optimize: lua $(CORELUAFILES) $(LIBLUAFILES)

.PHONY: optimizeextra optimizeextra: lua $(COMPATLUAFILES) $(TOOLLUAFILES)

.PHONY: clean clean: @printf “\033[1mDeleting…\033[0m” @rm -rvf version lib/.lua lib//*.lua

.PHONY: install install: lua version optimize optimizeextra @prefix=”$(PREFIX)”;
if [[ ! $$prefix ]]; then
read -p $$’\033[1mWhere do you want to install Nomsu? (default: /usr/local) \033[0m’ prefix;
fi;
if [[ ! $$prefix ]]; then prefix=”/usr/local”; fi;
packagepath=”$(PACKAGEPATH)”;
if [[ ! $$packagepath ]]; then
read -p $$’\033[1mWhere do you want Nomsu to put packages you install in the future? (default: /opt) \033[0m’ packagepath;
fi;
if [[ ! $$packagepath ]]; then packagepath=”/opt”; fi;
if [[ $$prefix != “realpath $$prefix” ]]; then
printf $$’\033[1;31mWarning: ‘$$prefix$$’ is not an absolute path. This may cause problems.\033[0m\n’;
read -p $$’\033[1mWould you rather use ‘realpath $$prefix$$’ instead? (recommended)[Y/n]\033[0m ‘ use
real;
if [[ ! $$usereal =~ ^[Nn] ]]; then
prefix="realpath $$prefix”;
fi;
fi;
version="cat version”;
mkdir -pv $$prefix/bin $$prefix/lib/nomsu/$$version $$prefix/share/nomsu/$$version $$prefix/share/man/man1 $$packagepath/nomsu
&& printf “#!$(LUA
BIN)\nNOMSUPREFIX, NOMSUPACKAGEPATH = [[$$prefix]], [[$$packagepath/nomsu]]”
| cat - nomsu.lua > $$prefix/bin/nomsu$$version
&& chmod +x $$prefix/bin/nomsu$$version
&& cp -v nomsu $$prefix/bin
&& cp -v doc/nomsu.1 $$prefix/share/man/man1
&& cp -rv $(LUAFILES) $(PEGFILES) lib $$prefix/share/nomsu/$$version;

.PHONY: uninstall uninstall: version @prefix=”$(PREFIX)”;
if [[ ! $$prefix ]]; then
read -p $$’\033[1mWhere do you want to uninstall Nomsu from? (default: /usr/local) \033[0m’ prefix;
fi;
if [[ ! $$prefix ]]; then prefix=”/usr/local”; fi;
printf “\033[1mNomsu will be uninstalled from:\033[0m\n”;
echo “ $$prefix/bin”;
echo “ $$prefix/lib”;
echo “ $$prefix/share”;
read -p $$’\033[1mis this okay? [Y/n]\033[0m ‘ ans;
if [[ $$ans =~ ^[Nn] ]]; then exit; fi;
printf “\033[1mDeleting…\033[0m\n”;
version=”$(UNINSTALL_VERSION)”;
if [[ ! $$version ]]; then version="cat version”; fi;
rm -rvf $$prefix/lib/nomsu/$$version $$prefix/share/nomsu/$$version $$prefix/bin/nomsu$$version;
if [[ “find $$prefix/bin -type f -regex '.*/nomsu[0-9.]+\$$'” == ““ ]]; then
rm -vf $$prefix/bin/nomsu $$prefix/share/man/man1/nomsu.1;
else
if [ -f $$prefix/bin/nomsu ]; then
read -p $$’\033[1mIt looks like there are other versions of Nomsu installed. Is it okay to leave the “nomsu” cross-version launcher in place? (recommended) [Y/n]\033[0m ‘ ans;
if [[ $$ans =~ ^[Nn] ]]; then
printf “\033[1mDeleting…\033[0m\n”;
rm -vf $$prefix/bin/nomsu $$prefix/share/man/man1/nomsu.1;
fi;
fi;
fi;
if [ “ls $$prefix/lib/nomsu 2>/dev/null” == ““ ]; then rm -rvf $$prefix/lib/nomsu; fi;
if [ “ls $$prefix/share/nomsu 2>/dev/null” == ““ ]; then rm -rvf $$prefix/share/nomsu; fi;
printf $$’\033[1mDone.\033[0m\n’;

uninstallpackages: @packagepath=”$(PACKAGEPATH)”;
if [[ ! $$packagepath ]]; then
read -p $$’\033[1mWhere have your Nomsu packages been installed? (default: /opt) \033[0m’ packagepath;
fi;
if [[ ! $$packagepath ]]; then packagepath=”/opt”; fi;
if [ -d $$packagepath/nomsu ]; then
read -p $$’\033[1mDo you want to delete all installed libraries from /opt? [y/n] \033[0m’ confirm;
if [[ $$confirm == “y” ]]; then
rm -rvf $$packagepath/nomsu;
fi;
fi;