aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile33
1 files changed, 28 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index a6ce457..7636bce 100644
--- a/Makefile
+++ b/Makefile
@@ -1,23 +1,46 @@
+NAME=bpeg
PREFIX=/usr/local
CFLAGS=-std=c99 -D_XOPEN_SOURCE=500 -D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L
CWARN=-Wall -Wpedantic -Wextra -Wno-unknown-pragmas -Wno-missing-field-initializers\
-Wno-padded -Wsign-conversion -Wno-missing-noreturn -Wno-cast-qual -Wtype-limits
-LDFLAGS=
G ?=
O ?= -O3
CFILES=compiler.c grammar.c utils.c vm.c
OBJFILES=$(CFILES:.c=.o)
-all: bpeg
+all: $(NAME)
.c.o:
cc -c $(CFLAGS) $(CWARN) $(G) $(O) -o $@ $<
-bpeg: $(OBJFILES) bpeg.c
+$(NAME): $(OBJFILES) $(NAME).c
cc $(CFLAGS) $(CWARN) $(G) $(O) -o $@ $^
clean:
- rm -f bpeg $(OBJFILES)
+ rm -f $(NAME) $(OBJFILES)
-.PHONY: all clean
+install: $(NAME)
+ @prefix="$(PREFIX)"; \
+ if [ ! "$$prefix" ]; then \
+ printf '\033[1mWhere do you want to install? (default: /usr/local) \033[0m'; \
+ read prefix; \
+ fi; \
+ [ ! "$$prefix" ] && prefix="/usr/local"; \
+ mkdir -pv -m 755 "$$prefix/share/man/man1" "$$prefix/bin" \
+ && cp -v $(NAME).1 "$$prefix/share/man/man1/" \
+ && rm -f "$$prefix/bin/$(NAME)" \
+ && cp -v $(NAME) "$$prefix/bin/"
+
+uninstall:
+ @prefix="$(PREFIX)"; \
+ if [ ! "$$prefix" ]; then \
+ printf '\033[1mWhere do you want to uninstall from? (default: /usr/local) \033[0m'; \
+ read prefix; \
+ fi; \
+ [ ! "$$prefix" ] && prefix="/usr/local"; \
+ echo "Deleting..."; \
+ rm -rvf "$$prefix/bin/$(NAME)" "$$prefix/share/man/man1/$(NAME).1" ; \
+ printf "\033[1mIf you created any config files in ~/.config/$(NAME), you may want to delete them manually.\033[0m\n"
+
+.PHONY: all, clean, install, uninstall