Files
comp2510/lab08/Makefile
T
2025-11-07 10:40:50 -08:00

61 lines
1.5 KiB
Makefile

# Compiler and flags
CC = gcc
CFLAGS = -Wall -std=c11
#Input file
INPUT = input5.txt
OUTPUT = output.txt
REF = ref5.txt
# Source file
SRCS = lab8.c
# Output
TARGET = lab8.out
# Default target
all: $(TARGET)
# Rule to build the executable
$(TARGET): $(SRCS)
$(CC) $(CFLAGS) $(SRCS) -o $(TARGET)
convert_input: $(INPUT)
@if [ -s $(INPUT) ] && file $(INPUT) | grep -q 'CRLF line terminators' ; then \
{ cat $(INPUT) | dos2unix; } | tee $(INPUT) >/dev/null; \
fi
@if [ -s $(INPUT) ] && tail -c1 $(INPUT) | grep -q . ; then \
echo >> $(INPUT); \
tr -d '\r' < $(INPUT) > temp_file && mv temp_file $(INPUT); \
fi
convert_output: $(OUTPUT)
@if [ -s $(OUTPUT) ] && file $(OUTPUT) | grep -q 'CRLF line terminators' ; then \
{ cat $(OUTPUT) | dos2unix; } | tee $(OUTPUT) >/dev/null; \
fi
@if [ -s $(OUTPUT) ] && tail -c1 $(OUTPUT) | grep -q . ; then \
echo >> $(OUTPUT); \
tr -d '\r' < $(OUTPUT) > temp_file && mv temp_file $(OUTPUT); \
fi
check: $(OUTPUT) $(REF)
@if [ -s $(REF) ] && file $(REF) | grep -q 'CRLF line terminators' ; then \
{ cat $(REF) | dos2unix; } | tee $(REF) >/dev/null; \
fi
@if [ -s $(REF) ] && tail -c1 $(REF) | grep -q . ; then \
echo >> $(REF); \
tr -d '\r' < $(REF) > temp_file && mv temp_file $(REF); \
fi
@diff -q $(OUTPUT) $(REF) > /dev/null; \
if [ $$? -eq 0 ]; then \
echo "Pass"; \
else \
echo "Fail"; \
fi
# Rule to run the program
run: $(TARGET)
./$(TARGET) $(INPUT) $(OUTPUT)
# Rule to clean generated files
clean:
rm -f $(TARGET)