# gg - Grokkin' Grep: a minimal, fast, portable grep-like file finder.
#
# Build:   make
# Clean:   make clean
# Install: make install PREFIX=/usr/local

CC      ?= cc
CFLAGS  ?= -O2 -s -std=c11 -Wall -Wextra -march=native
CPPFLAGS += -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE
LDFLAGS ?=
LDLIBS  += -lpthread
# The matcher uses POSIX memmem(), which glibc accelerates with SIMD on
# whatever CPU you run on. -mavx2 is harmless but unnecessary; drop it for
# maximum portability (e.g. make MARCH="").
MARCH   ?=

BINARY  := gg
SRC     := gg.c
PREFIX  ?= /usr/local
BINDIR  := $(PREFIX)/bin

all: $(BINARY)

$(BINARY): $(SRC)
	$(CC) $(CFLAGS) $(CPPFLAGS) $(MARCH) $(LDFLAGS) -o $@ $(SRC) $(LDLIBS)

clean:
	rm -f $(BINARY)

install: $(BINARY)
	install -d $(BINDIR)
	install -m 0755 $(BINARY) $(BINDIR)/$(BINARY)

uninstall:
	rm -f $(BINDIR)/$(BINARY)

.PHONY: all clean install uninstall
