# Compiler
CXX ?= g++
# Compiler flags
CXXFLAGS ?= --std=c++11 -Wall -Werror -pedantic -g -Wno-sign-compare -Wno-comment
# Run a regression test
test: Matrix_public_test.exe Matrix_tests.exe Image_public_test.exe Image_tests.exe processing_public_tests.exe resize.exe
./Matrix_public_test.exe
./Image_public_test.exe
./processing_public_tests.exe
./resize.exe dog.ppm dog_4x5.out.ppm 4 5
diff dog_4x5.out.ppm dog_4x5.correct.ppm
Matrix_public_test.exe: tests/Matrix_public_test.cpp src/Matrix.cpp tests/Matrix_test_helpers.cpp
$(CXX) $(CXXFLAGS) $^ -o $@
Matrix_tests.exe: tests/Matrix_tests.cpp src/Matrix.cpp tests/Matrix_test_helpers.cpp
$(CXX) $(CXXFLAGS) $^ -o $@
Image_public_test.exe: tests/Image_public_test.cpp src/Matrix.cpp src/Image.cpp \
tests/Matrix_test_helpers.cpp tests/Image_test_helpers.cpp
$(CXX) $(CXXFLAGS) $^ -o $@
Image_tests.exe: tests/Image_tests.cpp src/Matrix.cpp src/Image.cpp tests/Matrix_test_helpers.cpp \
tests/Image_test_helpers.cpp
$(CXX) $(CXXFLAGS) $^ -o $@
processing_public_tests.exe: tests/processing_public_tests.cpp src/Matrix.cpp \
src/Image.cpp src/processing.cpp \
tests/Matrix_test_helpers.cpp tests/Image_test_helpers.cpp
$(CXX) $(CXXFLAGS) $^ -o $@
resize.exe: src/resize.cpp src/Matrix.cpp src/Image.cpp src/processing.cpp
$(CXX) $(CXXFLAGS) $^ -o $@
# Disable built-in Makefile rules
.SUFFIXES:
clean:
rm -rvf *.exe *.out.txt *.out.ppm *.dSYM *.stackdump
# Run style check tools
CPD ?= /usr/um/pmd-6.0.1/bin/run.sh cpd
OCLINT ?= /usr/um/oclint-0.13/bin/oclint
FILES := \
src/Image.cpp \
tests/Image_tests.cpp \
src/Matrix.cpp \
tests/Matrix_tests.cpp \
src/processing.cpp \
src/resize.cpp
style :
$(OCLINT) \
-no-analytics \
-rule=LongLine \
-rule=HighNcssMethod \
-rule=DeepNestedBlock \
-rule=TooManyParameters \
-rc=LONG_LINE=90 \
-rc=NCSS_METHOD=40 \
-rc=NESTED_BLOCK_DEPTH=4 \
-rc=TOO_MANY_PARAMETERS=4 \
-max-priority-1 0 \
-max-priority-2 0 \
-max-priority-3 0 \
$(FILES) \
-- -xc++ --std=c++11
$(CPD) \
--minimum-tokens 100 \
--language cpp \
--failOnViolation true \
--files $(FILES)
@echo "########################################"
@echo "EECS 280 style checks PASS"