• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1CC = gcc
2ifeq ($(shell uname -s), Darwin)
3CC = clang
4endif
5#DEBUG = -O0 -g
6CFLAGS += -std=c99 -pedantic -Wall -Wextra -Werror
7CFLAGS += $(DEBUG)
8DEFINES = -D UNITY_OUTPUT_CHAR=UnityOutputCharSpy_OutputChar
9DEFINES += -D UNITY_OUTPUT_CHAR_HEADER_DECLARATION=UnityOutputCharSpy_OutputChar\(int\)
10SRC = ../src/unity_fixture.c \
11      ../../../src/unity.c   \
12      unity_fixture_Test.c   \
13      unity_fixture_TestRunner.c \
14      unity_output_Spy.c     \
15      main/AllTests.c
16
17INC_DIR = -I../src -I../../../src/
18BUILD_DIR = ../build
19TARGET = ../build/fixture_tests.exe
20
21all: default noStdlibMalloc 32bits
22
23default: $(BUILD_DIR)
24	$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_SUPPORT_64
25	@ echo "default build"
26	./$(TARGET)
27
2832bits: $(BUILD_DIR)
29	$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -m32
30	@ echo "32bits build"
31	./$(TARGET)
32
33noStdlibMalloc: $(BUILD_DIR)
34	$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_EXCLUDE_STDLIB_MALLOC
35	@ echo "build with noStdlibMalloc"
36	./$(TARGET)
37
38C89: CFLAGS += -D UNITY_EXCLUDE_STDINT_H # C89 did not have type 'long long', <stdint.h>
39C89: $(BUILD_DIR)
40	$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -std=c89 && ./$(TARGET)
41	$(CC) $(CFLAGS) $(DEFINES) $(SRC) $(INC_DIR) -o $(TARGET) -D UNITY_EXCLUDE_STDLIB_MALLOC -std=c89
42	./$(TARGET)
43
44$(BUILD_DIR):
45	mkdir -p $(BUILD_DIR)
46
47clean:
48	rm -f $(TARGET) $(BUILD_DIR)/*.gc*
49
50cov: $(BUILD_DIR)
51	cd $(BUILD_DIR) && \
52	$(CC) $(DEFINES) $(foreach i, $(SRC), ../test/$(i)) $(INC_DIR) -o $(TARGET) -fprofile-arcs -ftest-coverage
53	rm -f $(BUILD_DIR)/*.gcda
54	./$(TARGET) > /dev/null ; ./$(TARGET) -v > /dev/null
55	cd $(BUILD_DIR) && \
56	gcov unity_fixture.c | head -3
57	grep '###' $(BUILD_DIR)/unity_fixture.c.gcov -C2 || true # Show uncovered lines
58
59# These extended flags DO get included before any target build runs
60CFLAGS += -Wbad-function-cast
61CFLAGS += -Wcast-qual
62CFLAGS += -Wconversion
63CFLAGS += -Wformat=2
64CFLAGS += -Wmissing-prototypes
65CFLAGS += -Wold-style-definition
66CFLAGS += -Wpointer-arith
67CFLAGS += -Wshadow
68CFLAGS += -Wstrict-overflow=5
69CFLAGS += -Wstrict-prototypes
70CFLAGS += -Wswitch-default
71CFLAGS += -Wundef
72CFLAGS += -Wno-error=undef  # Warning only, this should not stop the build
73CFLAGS += -Wunreachable-code
74CFLAGS += -Wunused
75CFLAGS += -fstrict-aliasing
76