aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile78
1 files changed, 78 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..77f176b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,78 @@
+NAME=plock
+CC = gcc
+CFLAGS = -Isrc
+LIBS = -lX11
+
+PREFIX = /usr/local
+MANPREFIX = $(PREFIX)/man
+
+all: bin/$(NAME)
+
+debug: CFLAGS += -Wall -DEBUG -g
+debug: bin/$(NAME)
+
+app_sources = $(wildcard src/*.c src/io/*.c src/pattern/*.c src/utils/*.c)
+app_objects = $(patsubst src/%.c, bin/%.o, $(app_sources))
+
+bin/$(NAME): bin/main.o bin/args.o bin/utils/utilities.o bin/utils/args.o bin/pattern/pattern.o bin/pattern/next.o bin/io/io.o bin/io/text.o bin/io/svg.o # $(app_objects)
+ $(CC) $(CFLAGS) $^ -o $@ $(LIBS)
+
+bin/main.o: src/main.c bin
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin/args.o: src/args.c bin
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin/utils/utilities.o: src/utils/utilities.c bin bin/utils
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin/utils/args.o: src/utils/args.c bin bin/utils
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin/pattern/pattern.o: src/pattern/pattern.c bin bin/pattern
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin/pattern/next.o: src/pattern/next.c bin bin/pattern
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin/io/io.o: src/io/io.c bin bin/io
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin/io/text.o: src/io/text.c bin bin/io
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin/io/svg.o: src/io/svg.c bin bin/io
+ $(CC) $(CFLAGS) -c $< -o $@
+
+bin:
+ mkdir -p $@
+
+bin/io:
+ mkdir -p $@
+
+bin/pattern:
+ mkdir -p $@
+
+bin/utils:
+ mkdir -p $@
+
+clean:
+ rm -rf bin/*
+
+install: bin/$(NAME)
+ @echo INSTALL execuatble
+ mkdir -p $(PREFIX)/bin
+ cp $< $(PREFIX)/bin/$(NAME)
+ chmod 755 $(PREFIX)/bin/$(NAME)
+ @echo INSTALL man page
+ mkdir -p $(MANPREFIX)/man1
+ gzip -c doc/$(NAME).1 > $(MANPREFIX)/man1/$(NAME).1.gz
+ chmod 644 $(MANPREFIX)/man1/$(NAME).1.gz
+
+uninstall:
+ @echo REMOVE execuatble
+ rm -f $(PREFIX)/bin/$(NAME)
+ @echo REMOVE man page
+ rm -f $(MANPREFIX)/man1/$(NAME).1.gz
+
+.PHONY: clean install uninstall