diff --git a/source_codes/piles/.gitignore b/source_codes/piles/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..417412209ee435c49fa5b0d2b7ba0585c0266855
--- /dev/null
+++ b/source_codes/piles/.gitignore
@@ -0,0 +1,6 @@
+pile_ptr_int.o
+eval_post
+pile_ptr_int.o
+eval_post.o
+pile_array_int.o
+pile_ptr_int_skel.o
diff --git a/source_codes/piles/Makefile b/source_codes/piles/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..e0b82584954cc766940fdf64a3ecb920cf6fca12
--- /dev/null
+++ b/source_codes/piles/Makefile
@@ -0,0 +1,27 @@
+CC:=gcc
+# SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+SOURCES := $(wildcard *.c)
+OBJECTS := $(patsubst %.c, %.o, $(SOURCES))
+
+all: eval_post $(OBJECTS)
+
+eval_post: eval_post.c pile_ptr_int.o
+	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
+	@echo $@ >> .gitignore
+	@echo *.o >> .gitignore
+
+%.o: %.c
+	$(CC) $(CFLAGS) -c $< -o $@
+	@echo $@ >> .gitignore
+
+pile_ptr_int_skel.o: pile_ptr_int.h
+pile_ptr_int.o: pile_ptr_int.h
+pile_array_int.o: pile_array_int.h
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o eval_post .gitignore
+