aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2021-01-15 18:32:56 -0800
committerBruce Hill <bruce@bruce-hill.com>2021-01-15 18:32:56 -0800
commit631e59bfa7e2f2c0050ad1a84ff70feb8768626d (patch)
treec3d9310b365537f6b5cc74f08d3a71718c4b4ff5
parentd31d2e89850d3132850e0f2e1ce6d973bd482073 (diff)
Fully supporting NAME make argument
-rw-r--r--Makefile15
-rw-r--r--bp.c16
2 files changed, 18 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index 5a57bd4..a0cf193 100644
--- a/Makefile
+++ b/Makefile
@@ -4,9 +4,10 @@ PREFIX=/usr/local
SYSCONFDIR=/etc
CFLAGS=-std=c99 -Werror -D_XOPEN_SOURCE=700 -D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L
CWARN=-Wall -Wpedantic -Wextra -Wsign-conversion -Wtype-limits -Wunused-result
-EXTRA_FLAGS=
+EXTRA=
G=
O=-O3
+ALL_FLAGS=$(CFLAGS) -DBP_NAME="\"$(NAME)\"" $(EXTRA) $(CWARN) $(G) $(O)
CFILES=compiler.c grammar.c utils.c vm.c file_loader.c printing.c json.c
OBJFILES=$(CFILES:.c=.o)
@@ -14,27 +15,27 @@ OBJFILES=$(CFILES:.c=.o)
all: $(NAME)
%.o: %.c %.h types.h
- $(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) $(CWARN) $(G) $(O) -o $@ $<
+ $(CC) -c $(ALL_FLAGS) -o $@ $<
$(NAME): $(OBJFILES) bp.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CWARN) $(G) $(O) -o $@ $(OBJFILES) bp.c
+ $(CC) $(ALL_FLAGS) -o $@ $(OBJFILES) bp.c
clean:
rm -f $(NAME) $(OBJFILES)
leaktest:
- make G=-ggdb O=-O0 EXTRA_CFLAGS=-DDEBUG_HEAP clean bp
+ make G=-ggdb O=-O0 EXTRA=-DDEBUG_HEAP clean bp
valgrind --leak-check=full ./bp -l -g grammars/bpeg.bp -p Grammar grammars/bpeg.bp
install: $(NAME)
- mkdir -p -m 755 "$(PREFIX)/share/man/man1" "$(PREFIX)/bin" "$(SYSCONFDIR)/xdg/bp"
- cp -rv grammars/* "$(SYSCONFDIR)/xdg/bp/"
+ mkdir -p -m 755 "$(PREFIX)/share/man/man1" "$(PREFIX)/bin" "$(SYSCONFDIR)/xdg/$(NAME)"
+ cp -rv grammars/* "$(SYSCONFDIR)/xdg/$(NAME)/"
cp -v bp.1 "$(PREFIX)/share/man/man1/$(NAME).1"
rm -f "$(PREFIX)/bin/$(NAME)"
cp -v $(NAME) "$(PREFIX)/bin/"
uninstall:
- rm -rvf "$(PREFIX)/bin/$(NAME)" "$(PREFIX)/share/man/man1/$(NAME).1" "$(SYSCONFDIR)/xdg/bp";
+ rm -rvf "$(PREFIX)/bin/$(NAME)" "$(PREFIX)/share/man/man1/$(NAME).1" "$(SYSCONFDIR)/xdg/$(NAME)";
@if [ -d ~/.config/$(NAME) ]; then \
printf 'Config files exist in ~/.config/$(NAME) Do you want to delete them? [Y/n] '; \
read confirm; \
diff --git a/bp.c b/bp.c
index 77589ca..2c6309d 100644
--- a/bp.c
+++ b/bp.c
@@ -20,10 +20,14 @@
#include "utils.h"
#include "vm.h"
+#ifndef BP_NAME
+#define BP_NAME "bp"
+#endif
+
static const char *usage = (
- "BP - a Parsing Expression Grammar command line tool\n\n"
+ BP_NAME" - a Parsing Expression Grammar command line tool\n\n"
"Usage:\n"
- " bp [flags] <pattern> [<input files>...]\n\n"
+ " "BP_NAME" [flags] <pattern> [<input files>...]\n\n"
"Flags:\n"
" -h --help print the usage and quit\n"
" -v --verbose print verbose debugging info\n"
@@ -370,9 +374,9 @@ int main(int argc, char *argv[])
vm_op_t *replacement = bp_pattern(rep_file, rep_file->contents);
// Load builtins:
- file_t *xdg_file = load_file(&loaded_files, "/etc/xdg/bp/builtins.bp");
+ file_t *xdg_file = load_file(&loaded_files, "/etc/xdg/"BP_NAME"/builtins.bp");
if (xdg_file) defs = load_grammar(defs, xdg_file);
- file_t *local_file = load_file(&loaded_files, "%s/.config/bp/builtins.bp", getenv("HOME"));
+ file_t *local_file = load_file(&loaded_files, "%s/.config/"BP_NAME"/builtins.bp", getenv("HOME"));
if (local_file) defs = load_grammar(defs, local_file);
int i, npatterns = 0;
@@ -410,9 +414,9 @@ int main(int argc, char *argv[])
} else if (FLAG("--grammar") || FLAG("-g")) {
file_t *f = load_file(&loaded_files, flag);
if (f == NULL)
- f = load_file(&loaded_files, "%s/.config/bp/%s.bp", getenv("HOME"), flag);
+ f = load_file(&loaded_files, "%s/.config/"BP_NAME"/%s.bp", getenv("HOME"), flag);
if (f == NULL)
- f = load_file(&loaded_files, "/etc/xdg/bp/%s.bp", flag);
+ f = load_file(&loaded_files, "/etc/xdg/"BP_NAME"/%s.bp", flag);
check(f != NULL, "Couldn't find grammar: %s", flag);
defs = load_grammar(defs, f); // Keep in memory for debug output
} else if (FLAG("--pattern") || FLAG("-p")) {