pagerank/Makefile

52 lines
1.4 KiB
Makefile

# --------------------------------------------------
# Configuration
# --------------------------------------------------
CC := gcc
CFLAGS := -Wall -fopenmp -O3
LDFLAGS := -lm
SRCDIR := src
OBJDIR := out
DATAPATH := data/web-Google/web-Google.mtx
#
SRCS := $(wildcard $(SRCDIR)/*.c)
OBJS := $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRCS))
# --------------------------------------------------
# Phony targets
# --------------------------------------------------
.PHONY: all pagerank clean
all: pagerank
pagerank: $(OBJDIR)/pagerank | $(OBJDIR)
@echo "→ Build complete: pagerank"
# --------------------------------------------------
# Link
# --------------------------------------------------
$(OBJDIR)/pagerank: $(OBJS) $(DATAPATH) | $(OBJDIR)
@echo "→ Copying input data"
cp $(DATAPATH) $(OBJDIR)/input.mtx
@echo "→ Linking $@"
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS)
# --------------------------------------------------
# Compile
# --------------------------------------------------
$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
@echo "→ Compiling $<"
$(CC) $(CFLAGS) -c $< -o $@
# --------------------------------------------------
# Check if output directory exists
# --------------------------------------------------
$(OBJDIR):
mkdir -p $(OBJDIR)
# --------------------------------------------------
# Clean
# --------------------------------------------------
clean:
rm -rf $(OBJDIR)/*