blob: d78fde635e443c7db57a78a7b10ecee7f3b172ee [file] [log] [blame]
Roman Stratiienkocef5c772021-12-22 16:22:24 +02001
2INCLUDE_DIRS := . ../libdrm/include/drm include ./.ci/android_headers ./tests/test_include
3SYSTEM_INCLUDE_DIRS := /usr/include/libdrm
4
5CLANG := clang++-12
6CLANG_TIDY := clang-tidy-12
7OUT_DIR := /tmp/drm_hwcomposer/build/
8SRC_DIR := .
9
10CXXFLAGS := -fPIC -Wall -Wextra -Werror -DPLATFORM_SDK_VERSION=31 -D__ANDROID_API__=31
11CXXFLAGS += -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS
12CXXFLAGS += -fvisibility-inlines-hidden -std=gnu++17 -DHWC2_USE_CPP11 -DHWC2_INCLUDE_STRINGIFICATION -fno-rtti
13
14BUILD_FILES := \
15 backend/BackendClient.cpp \
16 backend/Backend.cpp \
17 backend/BackendManager.cpp \
18 backend/BackendRCarDu.cpp \
19 bufferinfo/BufferInfoGetter.cpp \
20 bufferinfo/legacy/BufferInfoImagination.cpp \
21 bufferinfo/legacy/BufferInfoLibdrm.cpp \
22 bufferinfo/legacy/BufferInfoMaliHisi.cpp \
23 bufferinfo/legacy/BufferInfoMaliMediatek.cpp \
24 bufferinfo/legacy/BufferInfoMaliMeson.cpp \
25 bufferinfo/legacy/BufferInfoMinigbm.cpp \
26 compositor/DrmDisplayComposition.cpp \
27 compositor/DrmDisplayCompositor.cpp \
28 compositor/Planner.cpp \
29 drm/DrmConnector.cpp \
30 drm/DrmCrtc.cpp \
31 drm/DrmDevice.cpp \
32 drm/DrmEncoder.cpp \
33 drm/DrmFbImporter.cpp \
34 drm/DrmMode.cpp \
35 drm/DrmPlane.cpp \
36 drm/DrmProperty.cpp \
37 DrmHwcTwo.cpp \
38 drm/ResourceManager.cpp \
39 drm/UEventListener.cpp \
40 drm/VSyncWorker.cpp \
41 tests/worker_test.cpp \
42 utils/autolock.cpp \
43 utils/Worker.cpp \
44
45#bufferinfo/BufferInfoMapperMetadata.cpp
46#utils/hwcutils.cpp
47
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020048TIDY_CHECKS_NORMAL := * \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020049 -hicpp-* -llvmlibc-* -fuchsia-* -altera-* \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020050 -llvm-header-guard \
51 -cppcoreguidelines-special-member-functions \
52 -cppcoreguidelines-pro-type-cstyle-cast \
53 -cppcoreguidelines-macro-usage \
54 -cppcoreguidelines-avoid-c-arrays \
55 -google-readability-braces-around-statements \
56 -google-readability-casting \
57 -misc-non-private-member-variables-in-classes \
58 -modernize-avoid-c-arrays \
59 -modernize-use-trailing-return-type \
60 -readability-braces-around-statements \
61 -readability-convert-member-functions-to-static \
62 -readability-implicit-bool-conversion \
63 -readability-identifier-naming \
64
65TIDY_CHECKS_COARSE := \
66 $(TIDY_CHECKS_NORMAL) \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020067 -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
68 -cppcoreguidelines-pro-bounds-constant-array-index \
69 -cppcoreguidelines-pro-bounds-pointer-arithmetic \
70 -cppcoreguidelines-pro-type-cstyle-cast \
71 -cppcoreguidelines-pro-type-union-access \
72 -cppcoreguidelines-pro-type-vararg \
73 -cppcoreguidelines-avoid-magic-numbers \
74 -cppcoreguidelines-macro-usage \
75 -cppcoreguidelines-avoid-c-arrays \
76 -google-readability-braces-around-statements \
77 -google-readability-casting \
78 -misc-non-private-member-variables-in-classes \
79 -modernize-avoid-c-arrays \
80 -modernize-use-trailing-return-type \
81 -readability-braces-around-statements \
82 -readability-convert-member-functions-to-static \
83 -readability-implicit-bool-conversion \
84 -readability-identifier-naming \
85 -readability-magic-numbers \
86 -readability-use-anyofallof \
87
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020088TIDY_FILES := \
89 drm/UEventListener.h:COARSE \
90 drm/DrmFbImporter.h:FINE \
91 drm/ResourceManager.h: \
92 drm/DrmMode.h: \
93 drm/DrmDevice.h: \
94 drm/DrmProperty.h: \
95 drm/DrmConnector.h: \
96 drm/DrmCrtc.h: \
97 drm/VSyncWorker.h: \
98 drm/DrmPlane.h: \
99 drm/DrmUnique.h:FINE \
100 drm/DrmEncoder.h: \
101 bufferinfo/legacy/BufferInfoMinigbm.h: \
102 bufferinfo/legacy/BufferInfoLibdrm.h: \
103 bufferinfo/legacy/BufferInfoMaliMediatek.h: \
104 bufferinfo/legacy/BufferInfoMaliHisi.h: \
105 bufferinfo/legacy/BufferInfoImagination.h: \
106 bufferinfo/legacy/BufferInfoMaliMeson.h: \
107 bufferinfo/BufferInfoGetter.h: \
108 bufferinfo/BufferInfoMapperMetadata.h: \
109 include/drmhwcgralloc.h: \
110 include/drmhwcomposer.h: \
111 utils/Worker.h: \
112 utils/UniqueFd.h:FINE \
113 utils/autolock.h: \
114 utils/log.h:FINE \
115 utils/properties.h:FINE \
116 compositor/DrmDisplayCompositor.h: \
117 compositor/Planner.h: \
118 compositor/DrmDisplayComposition.h: \
119 backend/BackendManager.h: \
120 backend/BackendClient.h: \
121 backend/Backend.h: \
122 backend/BackendRCarDu.h: \
123 DrmHwcTwo.h: \
124
125TIDY_FILES += \
126 backend/BackendClient.cpp:COARSE \
127 backend/Backend.cpp:COARSE \
128 backend/BackendManager.cpp:COARSE \
129 backend/BackendRCarDu.cpp:COARSE \
130 bufferinfo/BufferInfoGetter.cpp:COARSE \
131 bufferinfo/legacy/BufferInfoImagination.cpp:COARSE \
132 bufferinfo/legacy/BufferInfoLibdrm.cpp:COARSE \
133 bufferinfo/legacy/BufferInfoMaliHisi.cpp:COARSE \
134 bufferinfo/legacy/BufferInfoMaliMediatek.cpp:COARSE \
135 bufferinfo/legacy/BufferInfoMaliMeson.cpp:COARSE \
136 bufferinfo/legacy/BufferInfoMinigbm.cpp:COARSE \
137 compositor/DrmDisplayComposition.cpp:COARSE \
138 compositor/DrmDisplayCompositor.cpp:COARSE \
139 compositor/Planner.cpp:COARSE \
140 drm/DrmConnector.cpp:COARSE \
141 drm/DrmCrtc.cpp:COARSE \
142 drm/DrmDevice.cpp:COARSE \
143 drm/DrmEncoder.cpp:COARSE \
144 drm/DrmFbImporter.cpp:COARSE \
145 drm/DrmMode.cpp:COARSE \
146 drm/DrmPlane.cpp:COARSE \
147 drm/DrmProperty.cpp:COARSE \
148 DrmHwcTwo.cpp:COARSE \
149 drm/ResourceManager.cpp:COARSE \
150 drm/UEventListener.cpp:COARSE \
151 drm/VSyncWorker.cpp:COARSE \
152 tests/worker_test.cpp:COARSE \
153 utils/autolock.cpp:COARSE \
154 utils/Worker.cpp:COARSE \
155
156
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200157.PHONY: all build tidy tidy-fine clean
158
159all: build tidy tidy-fine
160
161clean:
162 rm -rf $(OUT_DIR)/
163
164_OBJ := $(BUILD_FILES:.cpp=.o)
165OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ))
166
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200167DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES))
168
169build: $(OBJ)
170
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200171CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS)
172
173$(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp
174 mkdir -p $(dir $@)
175 $(CLANG) $< $(CXXARGS) -c -o $@
176
177$(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp
178 mkdir -p $(dir $@)
Roman Stratiienko35112732021-12-23 13:41:13 +0200179 $(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200180
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200181# TIDY
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200182space := $(subst ,, )
183comma := ,
184
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200185TIDY_ARGS_FINE :=
186TIDY_ARGS_NONE := --checks="-*,llvm-include-order"
187TIDY_ARGS_ := --checks="-*,llvm-include-order"
188TIDY_ARGS_NORMAL := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_NORMAL)))"
189TIDY_ARGS_COARSE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_COARSE)))"
190
191define process-tidy
192
193_TARG := $(OUT_DIR)/$1.tidy.ts
194_DEP := $(SRC_DIR)/$1
195
196TIDY_DEPS += $(_TARG)
197
198TIDY_ARGS:=$(TIDY_ARGS_$2)
199
200$(_TARG): $(_DEP)
201 mkdir -p $(dir $(_TARG))
202 $(CLANG_TIDY) $(_DEP) $(TIDY_ARGS) -- -x c++ $(CXXARGS)
203 touch $(_TARG)
204
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200205endef
206
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200207$(foreach pair,$(TIDY_FILES),$(eval $(call process-tidy,$(word 1, $(subst :, ,$(pair))),$(word 2, $(subst :, ,$(pair))))))
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200208
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200209#$(warning $(TIDY_DEPS))
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200210
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200211tidy: $(TIDY_DEPS)
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200212
213ifneq ($(MAKECMDGOALS), clean)
214-include $(DEPS)
215endif