From 126678f737497d36126665b4661c17588c6d58d8 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 22 Jun 2018 02:40:11 -0700 Subject: Adding fancy makefile that compiles all the moonscript files and precompiles all the nomsu files and can build a nice executable file and install it wherever you like. --- Makefile | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c08b495 --- /dev/null +++ b/Makefile @@ -0,0 +1,65 @@ +# Nomsu makefile +# To build, run `make` +# To install, + +# ========= User-controlled variables ======== +LUA= lua +LUA_BIN= /usr/local/bin/$(LUA) + +PREFIX=/usr/local +BIN_DIR= $(PREFIX)/bin +NOMSU_DIR= $(PREFIX)/lib/nomsu + +# ========= You shouldn't need to mess with any of these variables below ================ + +MOON_FILES= code_obj.moon error_handling.moon nomsu.moon nomsu_compiler.moon nomsu_tree.moon parser.moon +LUA_FILES= code_obj.lua consolecolors.lua error_handling.lua nomsu.lua nomsu_compiler.lua \ + nomsu_tree.lua parser.lua utils.lua uuid.lua +CORE_NOM_FILES= $(wildcard core/*.nom) +CORE_LUA_FILES= $(patsubst %.nom,%.lua,$(CORE_NOM_FILES)) +LIB_NOM_FILES= $(wildcard lib/*.nom) +LIB_LUA_FILES= $(patsubst %.nom,%.lua,$(LIB_NOM_FILES)) +PEG_FILE= nomsu.peg + +NOMSU_HEADER=\#!$(LUA_BIN)\npackage.path = [[$(realpath $(NOMSU_DIR))/?.lua;]]..package.path\npackage.nomsupath = [[$(realpath $(NOMSU_DIR))]] + +all: build optimize + +.PHONY: test +test: build optimize + ./nomsu tests + +%.lua: %.moon + @moonc $< + +%.lua: %.nom + @./nomsu -c $< + +.PHONY: check_header +check_header: + @if [ "`head -n 3 nomsu 2>/dev/null`" != "`echo '$(NOMSU_HEADER)'`" ]; then rm -f nomsu core/*.lua lib/*.lua; fi + +nomsu: nomsu.lua + @echo '$(NOMSU_HEADER)' | cat - nomsu.lua > nomsu + @chmod +x nomsu + @echo "Built nomsu binary" + +build: $(LUA_FILES) check_header nomsu + +.PHONY: optimize +optimize: build $(CORE_LUA_FILES) $(LIB_LUA_FILES) + +.PHONY: clean +clean: + rm -rf nomsu core/*.lua lib/*.lua $(BIN_DIR)/nomsu $(NOMSU_DIR) + +.PHONY: install +install: all + mkdir -p $(BIN_DIR) && cp nomsu $(BIN_DIR) + mkdir -p $(NOMSU_DIR) && cp -r $(LUA_FILES) $(PEG_FILE) core lib $(NOMSU_DIR) + +.PHONY: uninstall +uninstall: all + rm -rf $(NOMSU_DIR) $(BIN_DIR)/nomsu + +# eof -- cgit v1.2.3