blob: 17c163b0b2f37b379fbec949c3196a615bad1a35 [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 Stratiienkoe78235c2021-12-23 17:36:12 +020067 -cppcoreguidelines-non-private-member-variables-in-classes \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020068 -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
69 -cppcoreguidelines-pro-bounds-constant-array-index \
70 -cppcoreguidelines-pro-bounds-pointer-arithmetic \
71 -cppcoreguidelines-pro-type-cstyle-cast \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +020072 -cppcoreguidelines-pro-type-reinterpret-cast \
73 -cppcoreguidelines-pro-type-static-cast-downcast \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020074 -cppcoreguidelines-pro-type-union-access \
75 -cppcoreguidelines-pro-type-vararg \
76 -cppcoreguidelines-avoid-magic-numbers \
77 -cppcoreguidelines-macro-usage \
78 -cppcoreguidelines-avoid-c-arrays \
79 -google-readability-braces-around-statements \
80 -google-readability-casting \
81 -misc-non-private-member-variables-in-classes \
82 -modernize-avoid-c-arrays \
83 -modernize-use-trailing-return-type \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +020084 -modernize-use-nodiscard \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020085 -readability-braces-around-statements \
86 -readability-convert-member-functions-to-static \
87 -readability-implicit-bool-conversion \
88 -readability-identifier-naming \
89 -readability-magic-numbers \
90 -readability-use-anyofallof \
91
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020092TIDY_FILES := \
93 drm/UEventListener.h:COARSE \
94 drm/DrmFbImporter.h:FINE \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +020095 drm/ResourceManager.h:COARSE \
96 drm/DrmMode.h:COARSE \
97 drm/DrmDevice.h:COARSE \
98 drm/DrmProperty.h:COARSE \
99 drm/DrmConnector.h:COARSE \
100 drm/DrmCrtc.h:COARSE \
101 drm/VSyncWorker.h:COARSE \
102 drm/DrmPlane.h:COARSE \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200103 drm/DrmUnique.h:FINE \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +0200104 drm/DrmEncoder.h:COARSE \
105 bufferinfo/legacy/BufferInfoMinigbm.h:COARSE \
106 bufferinfo/legacy/BufferInfoLibdrm.h:COARSE \
107 bufferinfo/legacy/BufferInfoMaliMediatek.h:COARSE \
108 bufferinfo/legacy/BufferInfoMaliHisi.h:COARSE \
109 bufferinfo/legacy/BufferInfoImagination.h:COARSE \
110 bufferinfo/legacy/BufferInfoMaliMeson.h:COARSE \
111 bufferinfo/BufferInfoGetter.h:COARSE \
112 bufferinfo/BufferInfoMapperMetadata.h:COARSE \
113 include/drmhwcgralloc.h:COARSE \
114 include/drmhwcomposer.h:COARSE \
115 utils/Worker.h:COARSE \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200116 utils/UniqueFd.h:FINE \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +0200117 utils/autolock.h:COARSE \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200118 utils/log.h:FINE \
119 utils/properties.h:FINE \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +0200120 compositor/DrmDisplayCompositor.h:COARSE \
121 compositor/Planner.h:COARSE \
122 compositor/DrmDisplayComposition.h:COARSE \
123 backend/BackendManager.h:COARSE \
124 backend/BackendClient.h:COARSE \
125 backend/Backend.h:COARSE \
126 backend/BackendRCarDu.h:COARSE \
127 DrmHwcTwo.h:COARSE \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200128
129TIDY_FILES += \
130 backend/BackendClient.cpp:COARSE \
131 backend/Backend.cpp:COARSE \
132 backend/BackendManager.cpp:COARSE \
133 backend/BackendRCarDu.cpp:COARSE \
134 bufferinfo/BufferInfoGetter.cpp:COARSE \
135 bufferinfo/legacy/BufferInfoImagination.cpp:COARSE \
136 bufferinfo/legacy/BufferInfoLibdrm.cpp:COARSE \
137 bufferinfo/legacy/BufferInfoMaliHisi.cpp:COARSE \
138 bufferinfo/legacy/BufferInfoMaliMediatek.cpp:COARSE \
139 bufferinfo/legacy/BufferInfoMaliMeson.cpp:COARSE \
140 bufferinfo/legacy/BufferInfoMinigbm.cpp:COARSE \
141 compositor/DrmDisplayComposition.cpp:COARSE \
142 compositor/DrmDisplayCompositor.cpp:COARSE \
143 compositor/Planner.cpp:COARSE \
144 drm/DrmConnector.cpp:COARSE \
145 drm/DrmCrtc.cpp:COARSE \
146 drm/DrmDevice.cpp:COARSE \
147 drm/DrmEncoder.cpp:COARSE \
148 drm/DrmFbImporter.cpp:COARSE \
149 drm/DrmMode.cpp:COARSE \
150 drm/DrmPlane.cpp:COARSE \
151 drm/DrmProperty.cpp:COARSE \
152 DrmHwcTwo.cpp:COARSE \
153 drm/ResourceManager.cpp:COARSE \
154 drm/UEventListener.cpp:COARSE \
155 drm/VSyncWorker.cpp:COARSE \
156 tests/worker_test.cpp:COARSE \
157 utils/autolock.cpp:COARSE \
158 utils/Worker.cpp:COARSE \
159
160
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200161.PHONY: all build tidy tidy-fine clean
162
163all: build tidy tidy-fine
164
165clean:
166 rm -rf $(OUT_DIR)/
167
168_OBJ := $(BUILD_FILES:.cpp=.o)
169OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ))
170
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200171DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES))
172
173build: $(OBJ)
174
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200175CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS)
176
177$(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp
178 mkdir -p $(dir $@)
179 $(CLANG) $< $(CXXARGS) -c -o $@
180
181$(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp
182 mkdir -p $(dir $@)
Roman Stratiienko35112732021-12-23 13:41:13 +0200183 $(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200184
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200185# TIDY
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200186space := $(subst ,, )
187comma := ,
188
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200189TIDY_ARGS_FINE :=
190TIDY_ARGS_NONE := --checks="-*,llvm-include-order"
191TIDY_ARGS_ := --checks="-*,llvm-include-order"
192TIDY_ARGS_NORMAL := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_NORMAL)))"
193TIDY_ARGS_COARSE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_COARSE)))"
194
195define process-tidy
196
197_TARG := $(OUT_DIR)/$1.tidy.ts
198_DEP := $(SRC_DIR)/$1
199
200TIDY_DEPS += $(_TARG)
201
202TIDY_ARGS:=$(TIDY_ARGS_$2)
203
204$(_TARG): $(_DEP)
205 mkdir -p $(dir $(_TARG))
206 $(CLANG_TIDY) $(_DEP) $(TIDY_ARGS) -- -x c++ $(CXXARGS)
207 touch $(_TARG)
208
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200209endef
210
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200211$(foreach pair,$(TIDY_FILES),$(eval $(call process-tidy,$(word 1, $(subst :, ,$(pair))),$(word 2, $(subst :, ,$(pair))))))
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200212
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200213#$(warning $(TIDY_DEPS))
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200214
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200215tidy: $(TIDY_DEPS)
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200216
217ifneq ($(MAKECMDGOALS), clean)
218-include $(DEPS)
219endif