# cirilisp - интерпретер за ћирилични дијалекат лиспа

# ћирилисп верзија
VERSION = 0,9

# локација за инсталацију
PREFIX = /usr/local
LIBPREFIX = $(PREFIX)/lib

# флегови за C компајлер и линкер
CPPFLAGS = -D_POSIX_C_SOURCE=2 -DDESTDIR=\"$(DESTDIR)\" -DVERSION=\"$(VERSION)\"
# CFLAGS = -g -std=c99 -pedantic -Wall -Wextra -Wno-maybe-uninitialized -O0 -fexec-charset=UTF-8 -finput-charset=UTF-8 -fwide-exec-charset=UTF-32LE
CFLAGS  = -std=c99 -pedantic -Wall -Wextra -Wno-maybe-uninitialized -O3 -fexec-charset=UTF-8 -finput-charset=UTF-8 -fwide-exec-charset=UTF-32LE
LDFLAGS = -lm -lc

CC = cc

C_SRC = cirilisp.c read.c eval.c print.c util.c internals.c
L_SRC = инит.ћ
INC = util.h read.h eval.h print.h internals.h
OBJ = $(C_SRC:.c=.o)

all: cirilisp $(L_SRC)

.c.o:
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $<

$(OBJ): $(INC)

cirilisp: $(OBJ)
	$(CC) -o $@ $(OBJ) $(LDFLAGS)

clean:
	-rm -f cirilisp $(OBJ) cirilisp-$(VERSION).tar.gz

# штампа садржај свих фајлова са изворним кодом, користи се за бројање линија,
# значајних линија, итд.
concat:
	@cat $(C_SRC) $(INC) $(L_SRC) Makefile

# филтрира дати улаз и штампа само "значајне" линије кода
sloc:
	@grep -v "^[[:space:]]*[{}]\{0,1\}[;\\]\{0,1\}$$"

dist: clean
	mkdir -p cirilisp-$(VERSION)
	cp -r Makefile $(INC) $(C_SRC) $(L_SRC) cirilisp-$(VERSION)
	tar -cf cirilisp-$(VERSION).tar cirilisp-$(VERSION)
	gzip cirilisp-$(VERSION).tar
	rm -rf cirilisp-$(VERSION)

install: all
	mkdir -p $(DESTDIR)$(PREFIX)/bin
	mkdir -p $(DESTDIR)$(LIBPREFIX)/cirilisp
	cp -f cirilisp $(DESTDIR)$(PREFIX)/bin
	chmod 755 $(DESTDIR)$(PREFIX)/bin/cirilisp
	cp -f $(L_SRC) $(DESTDIR)$(LIBPREFIX)/cirilisp
#	mkdir -p $(DESTDIR)$(MANPREFIX)/man1
#	sed "s/VERSION/$(VERSION)/g" < cirilisp.1 > $(DESTDIR)$(MANPREFIX)/man1/dwm.1
#	chmod 644 $(DESTDIR)$(MANPREFIX)/man1/cirilisp.1

uninstall:
	rm -f $(DESTDIR)$(PREFIX)/bin/cirilisp
	rm -rf $(DESTDIR)$(LIBPREFIX)/cirilisp
#	rm -f $(DESTDIR)$(MANPREFIX)/man1/cirilisp.1

.PHONY: all clean dist install uninstall concat sloc