Files
pp2026-hw1/part2/Makefile
T
2026-10-05 06:04:39 +08:00

54 lines
956 B
Makefile

TARGET := test_auto_vectorize
OBJS := main.o test1.o test2.o test3.o
CC := clang
CFLAGS := -O3 -std=c11 -Wall -D_POSIX_C_SOURCE=200809L
ifeq ($(ASSEMBLE),1)
CFLAGS += -S
endif
ifeq ($(VECTORIZE),1)
CFLAGS += -Rpass=loop-vectorize -Rpass-missed=loop-vectorize -Rpass-analysis=loop-vectorize
SUFFIX := .vec
else
CFLAGS += -fno-vectorize
SUFFIX := .novec
endif
ifeq ($(RESTRICT),1)
SUFFIX := $(SUFFIX).restr
endif
ifeq ($(ALIGN),1)
SUFFIX := $(SUFFIX).align
endif
ifeq ($(AVX2),1)
CFLAGS += -mavx2
SUFFIX := $(SUFFIX).avx2
endif
ifeq ($(FASTMATH),1)
CFLAGS += -ffast-math
SUFFIX := $(SUFFIX).fmath
endif
all: $(TARGET)
%.o: %.c test.h
ifeq ($(ASSEMBLE),1)
mkdir -p "./assembly"
$(CC) $(CFLAGS) -c $< -o assembly/$(basename $<)$(SUFFIX).s
else
$(CC) $(CFLAGS) -c $<
endif
$(TARGET): $(OBJS)
ifneq ($(ASSEMBLE),1)
$(CC) $(CFLAGS) $(OBJS) -o $@
endif
clean:
$(RM) *.o *.s $(TARGET) *~
cleanall:
$(RM) -r *.o *.s $(TARGET) *~ assembly