diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 45 |
1 files changed, 30 insertions, 15 deletions
@@ -20,46 +20,61 @@ 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 = [[$(NOMSU_LIB_DIR)/?.lua;]]..package.path\npackage.nomsupath = [[$(NOMSU_LIB_DIR)]] +GET_VERSION= $(LUA_BIN) nomsu.lua --version all: build optimize .PHONY: test test: build optimize - ./nomsu tests + ./nomsu_latest tests %.lua: %.moon @moonc $< %.lua: %.nom - @./nomsu -c $< + @./nomsu_latest -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 +check_header: version + @if [ -f nomsu_latest ]; then \ + NOMSU_HEADER="#!$(LUA_BIN)\\npackage.path = [[$(NOMSU_LIB_DIR)/$$(cat version)/?.lua;]]..package.path\\npackage.nomsupath = [[$(NOMSU_LIB_DIR)/$$(cat version)]]"; \ + if [ "`head -n 3 nomsu_latest 2>/dev/null`" != "`echo $$NOMSU_HEADER`" ]; then \ + rm -f nomsu_latest; \ + fi; \ + fi; + +version: $(PEG_FILE) nomsu.lua $(CORE_NOM_FILES) $(LIB_NOM_FILES) + @$(LUA_BIN) nomsu.lua --version > version + +nomsu_latest: nomsu.lua + @rm -f nomsu_latest + @NOMSU_HEADER="#!$(LUA_BIN)\\npackage.path = [[$(NOMSU_LIB_DIR)/$$(cat version)/?.lua;]]..package.path\\npackage.nomsupath = [[$(NOMSU_LIB_DIR)/$$(cat version)]]"; \ + echo $$NOMSU_HEADER | cat - nomsu.lua > nomsu_latest + @chmod +x nomsu_latest + @mv -f nomsu_latest nomsu`./nomsu_latest --version` + @ln -s nomsu`$(LUA_BIN) nomsu.lua --version` nomsu_latest @echo "Built nomsu binary" -build: $(LUA_FILES) check_header nomsu +build: $(LUA_FILES) version check_header nomsu_latest .PHONY: optimize optimize: build $(CORE_LUA_FILES) $(LIB_LUA_FILES) .PHONY: clean clean: - rm -rf nomsu core/*.lua lib/*.lua + @echo "Deleting..." + @rm -rvf nomsu`./nomsu_latest --version 2>/dev/null` nomsu_latest core/*.lua lib/*.lua .PHONY: install install: all - mkdir -p $(NOMSU_BIN_DIR) && cp nomsu $(NOMSU_BIN_DIR) - mkdir -p $(NOMSU_LIB_DIR) && cp -r $(LUA_FILES) $(PEG_FILE) core lib $(NOMSU_LIB_DIR) + mkdir -pv $(NOMSU_BIN_DIR) && cp -v nomsu nomsu`./nomsu_latest --version` $(NOMSU_BIN_DIR) + mkdir -pv $(NOMSU_LIB_DIR)/`./nomsu_latest --version` && cp -rv $(LUA_FILES) $(PEG_FILE) core lib $(NOMSU_LIB_DIR)/`./nomsu_latest --version` .PHONY: uninstall uninstall: all - rm -rf $(NOMSU_LIB_DIR) $(NOMSU_BIN_DIR)/nomsu + @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 |
