summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile44
1 files changed, 31 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index 98dc49e..4837e6d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,24 +1,42 @@
+ifneq (,)
+Terribly sorry, this makefile requires gmake.
+endif
+
+CC := gcc
+LD := gcc
+
CFLAGS = -Wall -Wextra -Os
LDFLAGS = -lz
-OBJ = obj/cli.o obj/compress.o obj/crypto.o obj/encoding.o obj/header.o obj/io.o obj/table.o
-TEST_OBJ = obj/test_cli.o obj/test_encoding.o obj/test_header.o obj/test_io.o obj/test_table.o obj/test_run.o
-ENTRY_OBJ = obj/main.o
+SRCDIR = src
+TSTDIR = test
+OBJDIR = obj
+BINDIR = bin
+
+TESTS := $(wildcard $(TSTDIR)/*.c)
+TEST_OBJECTS := $(TESTS:$(TSTDIR)/%.c=$(OBJDIR)/%.o)
+SOURCES := $(filter-out $(SRCDIR)/main.c, $(wildcard $(SRCDIR)/*.c))
+OBJECTS := $(filter-out $(OBJDIR)/main.o, $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o))
+
+all: $(BINDIR)/nekopack
-all: bin/nekopack
+$(BINDIR)/nekopack: $(OBJECTS) $(OBJDIR)/main.o
+ $(LD) $(LDFLAGS) $(OBJECTS) $(OBJDIR)/main.o -o bin/nekopack
-bin/nekopack: $(OBJ) $(ENTRY_OBJ)
- cc $(LDFLAGS) $(OBJ) $(ENTRY_OBJ) -o bin/nekopack
+$(BINDIR)/test: $(OBJECTS) $(TEST_OBJECTS)
+ $(LD) $(LDFLAGS) $(OBJECTS) $(TEST_OBJECTS) -o $(BINDIR)/test
+
+$(OBJDIR)/%.o: src/%.c
+ $(CC) $(CFLAGS) -c -o $@ $(SRCDIR)/$*.c
+
+$(OBJDIR)/%.o: test/%.c
+ $(CC) $(CFLAGS) -c -o $@ -I $(SRCDIR) $(TSTDIR)/$*.c
test: bin/test
bin/test
-bin/test: $(OBJ) $(TEST_OBJ)
- cc $(LDFLAGS) $(OBJ) $(TEST_OBJ) -o bin/test
-
-obj/%.o: src/%.c
- cc $(CFLAGS) -c -o $@ src/$*.c
+clean:
+ rm -f bin/* obj/*
-obj/%.o: test/%.c
- cc -I src $(CFLAGS) -c -o $@ test/$*.c
+.PHONY: clean test