1#!/usr/bin/make -f
2# Makefile for tests #
3# ------------------ #
4# Created by falkTX
5#
6
7CWD=..
8include $(CWD)/Makefile.mk
9
10# ---------------------------------------------------------------------------------------------------------------------
11
12BINDIR    := $(CWD)/../bin
13
14ifeq ($(DEBUG),true)
15OBJDIR    := $(CWD)/../build/tests/Debug
16MODULEDIR := $(CWD)/../build/modules/Debug
17else
18OBJDIR    := $(CWD)/../build/tests/Release
19MODULEDIR := $(CWD)/../build/modules/Release
20endif
21
22# ---------------------------------------------------------------------------------------------------------------------
23
24BUILD_C_FLAGS   += -I..
25BUILD_CXX_FLAGS += -I.. -I$(CWD)/modules
26
27# ---------------------------------------------------------------------------------------------------------------------
28
29PEDANTIC_FLAGS  = -pedantic -pedantic-errors
30PEDANTIC_FLAGS += -Wall -Wextra -Werror -pipe -DBUILDING_CARLA -DREAL_BUILD
31PEDANTIC_FLAGS += -I. -I../backend -I../includes -I../modules -I../utils
32
33PEDANTIC_FLAGS += -Wabi=98 -Wcast-qual -Wclobbered -Wconversion -Wdisabled-optimization
34PEDANTIC_FLAGS += -Wcast-align -Wcast-qual -Wclobbered -Wconversion -Wdisabled-optimization
35PEDANTIC_FLAGS += -Wdouble-promotion -Wfloat-equal -Wlogical-op -Wpointer-arith -Wsign-conversion
36PEDANTIC_FLAGS += -Wformat=2 -Woverlength-strings
37PEDANTIC_FLAGS += -Wformat-truncation=2 -Wformat-overflow=2
38PEDANTIC_FLAGS += -Wstringop-overflow=4
39PEDANTIC_FLAGS += -Wmissing-declarations -Wredundant-decls
40PEDANTIC_FLAGS += -Wshadow  -Wundef -Wuninitialized -Wunused
41PEDANTIC_FLAGS += -Wstrict-aliasing -fstrict-aliasing
42PEDANTIC_FLAGS += -Wstrict-overflow -fstrict-overflow
43PEDANTIC_FLAGS += -Wduplicated-branches -Wduplicated-cond -Wnull-dereference
44# -Wstringop-truncation
45
46PEDANTIC_CFLAGS  = $(PEDANTIC_FLAGS)
47PEDANTIC_CFLAGS += -Wc++-compat
48PEDANTIC_CFLAGS += -Winit-self -Wjump-misses-init -Wnested-externs -Wwrite-strings
49PEDANTIC_CFLAGS += -Wmissing-prototypes -Wstrict-prototypes
50
51PEDANTIC_CXXFLAGS  = $(PEDANTIC_FLAGS)
52PEDANTIC_CXXFLAGS += -Wc++0x-compat -Wc++11-compat
53PEDANTIC_CXXFLAGS += -Wnon-virtual-dtor -Woverloaded-virtual
54PEDANTIC_CXXFLAGS += -Wold-style-cast -Wuseless-cast
55PEDANTIC_CXXFLAGS += -Wzero-as-null-pointer-constant
56PEDANTIC_CXXFLAGS += -Weffc++
57
58PEDANTIC_CXX03_SKIPS  = -Wno-pedantic
59PEDANTIC_CXX03_SKIPS += -Wno-zero-as-null-pointer-constant
60
61PEDANTIC_CXX98_SKIPS  = $(PEDANTIC_CXX03_SKIPS)
62PEDANTIC_CXX98_SKIPS += -Wno-variadic-macros
63
64PEDANTIC_LDFLAGS = -Wl,-rpath,$(BINDIR) -L$(BINDIR)
65
66# ---------------------------------------------------------------------------------------------------------------------
67# Set targets
68
69TARGETS = \
70	ansi-pedantic-test_c_ansi_run \
71	ansi-pedantic-test_c89_run \
72	ansi-pedantic-test_c99_run \
73	ansi-pedantic-test_c11_run \
74	ansi-pedantic-test_cxx_ansi_run \
75	ansi-pedantic-test_cxx98_run \
76	ansi-pedantic-test_cxx03_run \
77	ansi-pedantic-test_cxx11_run \
78	carla-host-plugin_run
79
80# ---------------------------------------------------------------------------------------------------------------------
81
82all: $(TARGETS)
83
84# ---------------------------------------------------------------------------------------------------------------------
85
86ansi-%_run: $(BINDIR)/ansi-%
87	$(BINDIR)/ansi-$*
88
89carla-%_run: $(BINDIR)/carla-%
90# 	valgrind $(BINDIR)/carla-$*
91	valgrind --leak-check=full --show-leak-kinds=all --suppressions=valgrind.supp $(BINDIR)/carla-$*
92
93# ---------------------------------------------------------------------------------------------------------------------
94
95$(BINDIR)/ansi-pedantic-test_c_ansi: ansi-pedantic-test.c ../backend/Carla*.h ../includes/*.h
96	$(CC) $< $(PEDANTIC_CFLAGS) $(PEDANTIC_LDFLAGS) -lcarla_standalone2 -lcarla_utils -ansi -o $@
97
98$(BINDIR)/ansi-pedantic-test_c89: ansi-pedantic-test.c ../backend/Carla*.h ../includes/*.h
99	$(CC) $< $(PEDANTIC_CFLAGS) $(PEDANTIC_LDFLAGS) -lcarla_standalone2 -lcarla_utils -std=c89 -o $@
100
101$(BINDIR)/ansi-pedantic-test_c99: ansi-pedantic-test.c ../backend/Carla*.h ../includes/*.h
102	$(CC) $< $(PEDANTIC_CFLAGS) $(PEDANTIC_LDFLAGS) -lcarla_standalone2 -lcarla_utils -std=c99 -o $@
103
104$(BINDIR)/ansi-pedantic-test_c11: ansi-pedantic-test.c ../backend/Carla*.h ../includes/*.h
105	$(CC) $< $(PEDANTIC_CFLAGS) $(PEDANTIC_LDFLAGS) -lcarla_standalone2 -lcarla_utils -std=c11 -o $@
106
107# ---------------------------------------------------------------------------------------------------------------------
108
109$(BINDIR)/ansi-pedantic-test_cxx_ansi: ansi-pedantic-test.cpp ../backend/Carla*.h ../backend/Carla*.hpp ../includes/*.h
110	$(CXX) $< $(PEDANTIC_CXXFLAGS) $(PEDANTIC_CXX98_SKIPS) $(PEDANTIC_LDFLAGS) -lcarla_standalone2 -lcarla_utils -ansi -Wno-effc++ -o $@
111
112$(BINDIR)/ansi-pedantic-test_cxx98: ansi-pedantic-test.cpp ../backend/Carla*.h ../backend/Carla*.hpp ../includes/*.h
113	$(CXX) $< $(PEDANTIC_CXXFLAGS) $(PEDANTIC_CXX98_SKIPS) $(PEDANTIC_LDFLAGS) -lcarla_standalone2 -lcarla_utils -std=c++98 -Wno-effc++ -o $@
114
115$(BINDIR)/ansi-pedantic-test_cxx03: ansi-pedantic-test.cpp ../backend/Carla*.h ../backend/Carla*.hpp ../includes/*.h
116	$(CXX) $< $(PEDANTIC_CXXFLAGS) $(PEDANTIC_CXX03_SKIPS) $(PEDANTIC_LDFLAGS) -lcarla_standalone2 -lcarla_utils -std=c++03 -Wno-effc++ -o $@
117
118$(BINDIR)/ansi-pedantic-test_cxx11: ansi-pedantic-test.cpp ../backend/Carla*.h ../backend/Carla*.hpp ../includes/*.h
119	$(CXX) $< $(PEDANTIC_CXXFLAGS) $(PEDANTIC_LDFLAGS) -lcarla_standalone2 -lcarla_utils -std=c++11 -o $@
120
121# ---------------------------------------------------------------------------------------------------------------------
122
123$(BINDIR)/carla-host-plugin: carla-host-plugin.c
124	$(CC) $< $(PEDANTIC_CFLAGS) $(PEDANTIC_LDFLAGS) -g -O0 -Wno-declaration-after-statement -Wno-pedantic -lcarla_host-plugin -std=c99 -o $@
125
126# ---------------------------------------------------------------------------------------------------------------------
127
128clean:
129	rm -f $(BINDIR)/ansi-pedantic-test_* $(BINDIR)/carla-host-plugin
130
131debug:
132	$(MAKE) DEBUG=true
133
134# ---------------------------------------------------------------------------------------------------------------------
135
136$(OBJDIR)/%.c.o: %.c
137	-@mkdir -p $(OBJDIR)
138	@echo "Compiling $<"
139	@$(CC) $< $(BUILD_C_FLAGS) -c -o $@
140
141$(OBJDIR)/%.cpp.o: %.cpp
142	-@mkdir -p $(OBJDIR)
143	@echo "Compiling $<"
144	@$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
145
146# ---------------------------------------------------------------------------------------------------------------------
147