CC = gcc ifeq ($(shell uname -s), Darwin) CC = clang endif #DEBUG = -O0 -g CFLAGS += -std=c99 -pedantic -Wall -Wextra -Werror CFLAGS += $(DEBUG) DEFINES = -D UNITY_OUTPUT_CHAR=UnityOutputCharSpy_OutputChar ifeq ($(OS),Windows_NT) DEFINES += -D UNITY_OUTPUT_CHAR_HEADER_DECLARATION=UnityOutputCharSpy_OutputChar(int) else DEFINES += -D UNITY_OUTPUT_CHAR_HEADER_DECLARATION=UnityOutputCharSpy_OutputChar\(int\) endif SRC = ../src/unity_memory.c \ ../../../src/unity.c \ unity_memory_Test.c \ unity_memory_TestRunner.c \ unity_output_Spy.c \ INC_DIR = -I../src -I../../../src/ BUILD_DIR = ../build TARGET = ../build/memory_tests.exe all: default noStdlibMalloc 32bits default: $(BUILD_DIR) $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_SUPPORT_64 @ echo "default build" ./$(TARGET) 32bits: $(BUILD_DIR) $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m32 @ echo "32bits build" ./$(TARGET) noStdlibMalloc: $(BUILD_DIR) $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_EXCLUDE_STDLIB_MALLOC @ echo "build with noStdlibMalloc" ./$(TARGET) C89: CFLAGS += -D UNITY_EXCLUDE_STDINT_H # C89 did not have type 'long long', C89: $(BUILD_DIR) $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -std=c89 && ./$(TARGET) $(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_EXCLUDE_STDLIB_MALLOC -std=c89 ./$(TARGET) $(BUILD_DIR): mkdir -p $(BUILD_DIR) clean: rm -f $(TARGET) $(BUILD_DIR)/*.gc* cov: $(BUILD_DIR) cd $(BUILD_DIR) && \ $(CC) $(DEFINES) $(foreach i, $(SRC), ../test/$(i)) $(INC_DIR) -o $(TARGET) -fprofile-arcs -ftest-coverage rm -f $(BUILD_DIR)/*.gcda ./$(TARGET) > /dev/null ; ./$(TARGET) -v > /dev/null cd $(BUILD_DIR) && \ gcov unity_memory.c | head -3 grep '###' $(BUILD_DIR)/unity_memory.c.gcov -C2 || true # Show uncovered lines # These extended flags DO get included before any target build runs CFLAGS += -Wbad-function-cast CFLAGS += -Wcast-qual CFLAGS += -Wconversion CFLAGS += -Wformat=2 CFLAGS += -Wmissing-prototypes CFLAGS += -Wold-style-definition CFLAGS += -Wpointer-arith CFLAGS += -Wshadow CFLAGS += -Wstrict-overflow=5 CFLAGS += -Wstrict-prototypes CFLAGS += -Wswitch-default CFLAGS += -Wundef CFLAGS += -Wno-error=undef # Warning only, this should not stop the build CFLAGS += -Wunreachable-code CFLAGS += -Wunused CFLAGS += -fstrict-aliasing