summaryrefslogtreecommitdiff
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..76025f6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,78 @@
+CFLAGS += -Wall -Wextra -pedantic -march=native -mtune=native -MMD
+
+all: pipapo pipapo.debug pipapo.show pipapo.mem pipapo.noavx2 pipapo.nosimd pipapo.check
+
+SRCS := $(shell find . ! -type l -name "*.c")
+OBJS := $(SRCS:.c=.o)
+OBJS_DEBUG := $(SRCS:.c=.debug.o)
+OBJS_SHOW := $(SRCS:.c=.show.o)
+OBJS_MEM := $(SRCS:.c=.mem.o)
+OBJS_NOAVX2 := $(SRCS:.c=.noavx2.o)
+OBJS_NOSIMD := $(SRCS:.c=.nosimd.o)
+OBJS_CHECK := $(SRCS:.c=.check.o)
+DEPS := $(OBJS:.o=.d) $(OBJS_DEBUG:.o=.d) $(OBJS_SHOW:.o=.d) $(OBJS_MEM:.o=.d) $(OBJS_NOAVX2:.o=.d) $(OBJS_NOSIMD:.o=.d) $(OBJS_CHECK:.o=.d)
+
+$(OBJS): CFLAGS += -Ofast -funroll-loops -D__MATCH_AVX2 -D__MATCH_CTZL
+$(OBJS_DEBUG): CFLAGS += -O0 -g -D__MATCH_AVX2 -D__MATCH_CTZL
+$(OBJS_SHOW): CFLAGS += -DVERBOSE
+$(OBJS_MEM): CFLAGS += -DVERBOSE -D__MATCH_AVX2 -D__MATCH_CTZL
+$(OBJS_NOAVX2): CFLAGS += -Ofast -funroll-loops -DMATCH_UNROLLED -D__MATCH_CTZL
+$(OBJS_NOSIMD): CFLAGS += -Ofast -funroll-loops -DMATCH_UNROLLED
+$(OBJS_CHECK): CFLAGS += -DVERBOSE -Ofast -funroll-loops -DMATCH_UNROLLED
+
+pipapo: $(OBJS)
+ $(CC) $(CFLAGS) $(OBJS) -o pipapo
+
+pipapo.debug: $(OBJS_DEBUG)
+ $(CC) $(CFLAGS) $(OBJS_DEBUG) -o pipapo.debug
+
+pipapo.show: $(OBJS_SHOW)
+ $(CC) $(CFLAGS) $(OBJS_SHOW) -o pipapo.show
+
+pipapo.mem: $(OBJS_MEM)
+ $(CC) $(CFLAGS) $(OBJS_MEM) -o pipapo.mem
+
+pipapo.noavx2: $(OBJS_NOAVX2)
+ $(CC) $(CFLAGS) $(OBJS_NOAVX2) -o pipapo.noavx2
+
+pipapo.nosimd: $(OBJS_NOSIMD)
+ $(CC) $(CFLAGS) $(OBJS_NOSIMD) -o pipapo.nosimd
+
+pipapo.check: $(OBJS_CHECK)
+ $(CC) $(CFLAGS) $(OBJS_CHECK) -o pipapo.check
+
+%.debug.c: %.c
+ ln -s $< $@
+
+%.show.c: %.c
+ ln -s $< $@
+
+%.mem.c: %.c
+ ln -s $< $@
+
+%.noavx2.c: %.c
+ ln -s $< $@
+
+%.nosimd.c: %.c
+ ln -s $< $@
+
+%.check.c: %.c
+ ln -s $< $@
+
+%.o: %.c Makefile
+ $(CC) $(CFLAGS) -MMD -c -o $@ $<
+
+LINKS := $(shell find . -type l -name "*.c")
+
+.SECONDARY:
+
+.PHONY: clean tests
+clean:
+ -${RM} pipapo pipapo.debug pipapo.show pipapo.mem pipapo.noavx2 pipapo.nosimd $(OBJS) $(OBJS_DEBUG) $(OBJS_SHOW) $(OBJS_MEM) $(OBJS_NOAVX2) $(OBJS_NOSIMD) $(OBJS_CHECK) $(DEPS) $(LINKS)
+ -${RM} -r tests/plots
+
+tests: all
+ cd tests; ./run.sh
+ display tests/plots/*.png
+
+-include $(DEPS)