From 28e3cf098ba5279db973e62f755bfb52e7af6d9e Mon Sep 17 00:00:00 2001 From: Urban Wallasch Date: Thu, 11 Apr 2019 21:26:18 +0200 Subject: [PATCH] * Added install and uninstall make targets. * Redesigned most of the Makefile logic. --- Makefile | 53 ++++++++++++++++++++++++++++++++++--------- gogopherd.cfg.example | 5 ++-- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index f4c8757..e30be3f 100644 --- a/Makefile +++ b/Makefile @@ -4,32 +4,63 @@ PROJECT := gogopherd -BIN := $(PROJECT) -SRC := $(wildcard *.go) -SELF := $(lastword $(MAKEFILE_LIST)) +PREFIX ?= /usr/local +INST_BIN ?= $(PREFIX)/bin +INST_ETC ?= $(PREFIX)/etc +INST_DOC ?= $(PREFIX)/share/doc/$(PROJECT) -VERSION := $(strip $(shell git describe 2> /dev/null)) +CFGFILE := $(PROJECT).cfg +CFGSRC := $(CFGFILE).example +DOC := README.md $(CFGSRC) + +BIN := $(PROJECT) VERFILE := version.go +SRC := $(filter-out $(VERFILE),$(wildcard *.go)) +VERSION := $(strip $(shell git describe 2> /dev/null)) +SELF := $(lastword $(MAKEFILE_LIST)) GOBLD := go build +RM := rm -fv +CP := cp -afv +MKDIR := mkdir -pv +RMDIR := rmdir -v +TAIL := tail + +.PHONY: all version config install uninstall clean distclean -.PHONY: all version clean distclean +all: $(BIN) $(CFGFILE) $(SELF) -all: version $(BIN) +$(BIN): $(SRC) $(VERFILE) + $(GOBLD) -o $(BIN) $(SRC) $(VERFILE) -$(BIN): $(SRC) $(SELF) - $(GOBLD) $(SRVSRC) +$(CFGFILE): $(CFGSRC) + $(TAIL) -n +2 $(CFGSRC) > $(CFGFILE) -version: - @echo "generate version.go" +$(VERFILE): $(SRC) + @echo "generate $(VERFILE)" @echo "package main" > $(VERFILE) @echo "" >> $(VERFILE) @echo "const version = \"$(VERSION)\"" >> $(VERFILE) +install: all + @echo "installing to $(PREFIX)" + @$(MKDIR) $(INST_BIN) $(INST_ETC) $(INST_DOC) + @$(CP) $(BIN) $(INST_BIN) + @$(CP) $(CFGFILE) $(INST_ETC) + @$(CP) $(DOC) $(INST_DOC) + +uninstall: + @echo "uninstalling from $(PREFIX)" + @-$(RM) $(INST_BIN)/$(BIN) + @-$(RM) $(INST_ETC)/$(CFGFILE) + @-$(foreach D,$(DOC),$(RM) $(INST_DOC)/$(D) ;) + @-$(RMDIR) $(INST_DOC) |: + clean: - $(RM) $(BIN) $(VERFILE) + @$(RM) $(BIN) distclean: clean + @$(RM) $(VERFILE) $(CFGFILE) ########### ## EOF ## diff --git a/gogopherd.cfg.example b/gogopherd.cfg.example index 14809aa..5d94518 100644 --- a/gogopherd.cfg.example +++ b/gogopherd.cfg.example @@ -1,5 +1,6 @@ -# Example configuration file for gogopherd. -# Command line options will override the respective values set here. +!!! DO NOT EDIT THIS FILE, INSTEAD MAKE A COPY AND REMOVE THIS LINE. +# Configuration file for gogopherd. +# Command line options will override any corresponding values set here. # Network interface to bind to, empty means any. iface = "localhost" -- 2.30.2