nomsu/Makefile

78 lines
2.5 KiB
Makefile
Raw Normal View History

# Nomsu makefile
# To build, run `make`
# To install,
# ========= User-controlled variables ========
LUA= lua
2018-06-22 03:18:06 -07:00
LUA_BIN= $(shell which $(LUA))
PREFIX=/usr/local
2018-06-22 03:18:06 -07:00
NOMSU_BIN_DIR= $(PREFIX)/bin
NOMSU_LIB_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
2018-06-23 00:57:31 -07:00
GET_VERSION= $(LUA_BIN) nomsu.lua --version
all: build optimize
.PHONY: test
test: build optimize
2018-06-23 00:57:31 -07:00
./nomsu_latest tests
%.lua: %.moon
@moonc $<
%.lua: %.nom
2018-06-23 00:57:31 -07:00
@./nomsu_latest -c $<
.PHONY: check_header
2018-06-23 01:43:14 -07:00
check_header: $(PEG_FILE) nomsu.lua $(CORE_NOM_FILES) $(LIB_NOM_FILES)
2018-06-23 00:57:31 -07:00
@if [ -f nomsu_latest ]; then \
2018-06-23 01:43:14 -07:00
NOMSU_HEADER="#!$(LUA_BIN)\\npackage.path = [[$(NOMSU_LIB_DIR)/`$(GET_VERSION)`/?.lua;]]..package.path\\npackage.nomsupath = [[$(NOMSU_LIB_DIR)/`$(GET_VERSION)`]]"; \
2018-06-23 00:57:31 -07:00
if [ "`head -n 3 nomsu_latest 2>/dev/null`" != "`echo $$NOMSU_HEADER`" ]; then \
rm -f nomsu_latest; \
fi; \
fi;
nomsu_latest: nomsu.lua
@rm -f nomsu_latest
2018-06-23 01:43:14 -07:00
@NOMSU_HEADER="#!$(LUA_BIN)\\npackage.path = [[$(NOMSU_LIB_DIR)/`$(GET_VERSION)`/?.lua;]]..package.path\\npackage.nomsupath = [[$(NOMSU_LIB_DIR)/`$(GET_VERSION)`]]"; \
2018-06-23 00:57:31 -07:00
echo $$NOMSU_HEADER | cat - nomsu.lua > nomsu_latest
@chmod +x nomsu_latest
2018-06-23 01:43:14 -07:00
@mv -f nomsu_latest nomsu`$(GET_VERSION)`
@ln -s nomsu`$(GET_VERSION)` nomsu_latest
@echo "Built nomsu binary"
2018-06-23 01:43:14 -07:00
build: $(LUA_FILES) check_header nomsu_latest
.PHONY: optimize
optimize: build $(CORE_LUA_FILES) $(LIB_LUA_FILES)
.PHONY: clean
clean:
2018-06-23 00:57:31 -07:00
@echo "Deleting..."
2018-06-23 01:43:14 -07:00
@rm -rvf nomsu`$(GET_VERSION)` nomsu_latest core/*.lua lib/*.lua
.PHONY: install
install: all
2018-06-23 01:43:14 -07:00
mkdir -pv $(NOMSU_BIN_DIR) && cp -v nomsu nomsu`$(GET_VERSION)` $(NOMSU_BIN_DIR)
mkdir -pv $(NOMSU_LIB_DIR)/`$(GET_VERSION)` && cp -rv $(LUA_FILES) $(PEG_FILE) core lib $(NOMSU_LIB_DIR)/`$(GET_VERSION)`
.PHONY: uninstall
uninstall: all
2018-06-23 00:57:31 -07:00
@echo "Deleting..."
@rm -rvf $(NOMSU_LIB_DIR)/`$(GET_VERSION)` $(NOMSU_BIN_DIR)/nomsu`$(GET_VERSION)`
@if [ "`ls $(NOMSU_BIN_DIR)/nomsu*`" == "nomsu" ]; then rm -v $(NOMSU_BIN_DIR)/nomsu; fi
@if [ "`ls $(NOMSU_LIB_DIR) 2>/dev/null`" == "" ]; then rm -rvf $(NOMSU_LIB_DIR); fi
# eof