blob: 07ce83ac309faa184c87c4d87f3537b2fa598b40 [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 \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020044 utils/hwcutils.cpp \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020045
46#bufferinfo/BufferInfoMapperMetadata.cpp
Roman Stratiienkocef5c772021-12-22 16:22:24 +020047
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 -cppcoreguidelines-special-member-functions \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020051 -llvm-header-guard \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020052 -cppcoreguidelines-avoid-c-arrays \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020053 -cppcoreguidelines-pro-type-vararg \
54 -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
55 -cppcoreguidelines-pro-bounds-constant-array-index \
56 -cppcoreguidelines-avoid-magic-numbers \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020057 -google-readability-braces-around-statements \
58 -google-readability-casting \
59 -misc-non-private-member-variables-in-classes \
60 -modernize-avoid-c-arrays \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020061 -modernize-use-nodiscard \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020062 -modernize-use-trailing-return-type \
63 -readability-braces-around-statements \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020064
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 := \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020093 drm/UEventListener.h:NORMAL \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020094 drm/DrmFbImporter.h:FINE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020095 drm/ResourceManager.h:NORMAL \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +020096 drm/DrmMode.h:COARSE \
97 drm/DrmDevice.h:COARSE \
98 drm/DrmProperty.h:COARSE \
99 drm/DrmConnector.h:COARSE \
100 drm/DrmCrtc.h:COARSE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200101 drm/VSyncWorker.h:NORMAL \
102 drm/DrmPlane.h:NORMAL \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200103 drm/DrmUnique.h:FINE \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +0200104 drm/DrmEncoder.h:COARSE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200105 bufferinfo/legacy/BufferInfoMinigbm.h:NORMAL \
106 bufferinfo/legacy/BufferInfoLibdrm.h:NORMAL \
107 bufferinfo/legacy/BufferInfoMaliMediatek.h:NORMAL \
108 bufferinfo/legacy/BufferInfoMaliHisi.h:NORMAL \
109 bufferinfo/legacy/BufferInfoImagination.h:NORMAL \
110 bufferinfo/legacy/BufferInfoMaliMeson.h:NORMAL \
111 bufferinfo/BufferInfoGetter.h:NORMAL \
112 bufferinfo/BufferInfoMapperMetadata.h:NORMAL \
113 include/drmhwcgralloc.h:NORMAL \
114 include/drmhwcomposer.h:NORMAL \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +0200115 utils/Worker.h:COARSE \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200116 utils/UniqueFd.h:FINE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200117 utils/autolock.h:NORMAL \
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 \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200121 compositor/Planner.h:NORMAL \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +0200122 compositor/DrmDisplayComposition.h:COARSE \
123 backend/BackendManager.h:COARSE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200124 backend/BackendClient.h:NORMAL \
125 backend/Backend.h:NORMAL \
126 backend/BackendRCarDu.h:NORMAL \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +0200127 DrmHwcTwo.h:COARSE \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200128
129TIDY_FILES += \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200130 backend/BackendClient.cpp:NORMAL \
131 backend/Backend.cpp:NORMAL \
132 backend/BackendManager.cpp:NORMAL \
133 backend/BackendRCarDu.cpp:NORMAL \
134 bufferinfo/BufferInfoGetter.cpp:NORMAL \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200135 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 \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200143 compositor/Planner.cpp:NORMAL \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200144 drm/DrmConnector.cpp:COARSE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200145 drm/DrmCrtc.cpp:NORMAL \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200146 drm/DrmDevice.cpp:COARSE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200147 drm/DrmEncoder.cpp:NORMAL \
148 drm/DrmFbImporter.cpp:NORMAL \
149 drm/DrmMode.cpp:NORMAL \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200150 drm/DrmPlane.cpp:COARSE \
151 drm/DrmProperty.cpp:COARSE \
152 DrmHwcTwo.cpp:COARSE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200153 drm/ResourceManager.cpp:NORMAL \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200154 drm/UEventListener.cpp:COARSE \
155 drm/VSyncWorker.cpp:COARSE \
156 tests/worker_test.cpp:COARSE \
Roman Stratiienkofc014f52021-12-23 19:04:29 +0200157 utils/autolock.cpp:NORMAL \
158 utils/Worker.cpp:NORMAL \
159 utils/hwcutils.cpp:NORMAL \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200160
161
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200162.PHONY: all build tidy tidy-fine clean
163
164all: build tidy tidy-fine
165
166clean:
167 rm -rf $(OUT_DIR)/
168
169_OBJ := $(BUILD_FILES:.cpp=.o)
170OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ))
171
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200172DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES))
173
174build: $(OBJ)
175
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200176CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS)
177
178$(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp
179 mkdir -p $(dir $@)
180 $(CLANG) $< $(CXXARGS) -c -o $@
181
182$(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp
183 mkdir -p $(dir $@)
Roman Stratiienko35112732021-12-23 13:41:13 +0200184 $(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200185
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200186# TIDY
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200187space := $(subst ,, )
188comma := ,
189
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200190TIDY_ARGS_FINE :=
191TIDY_ARGS_NONE := --checks="-*,llvm-include-order"
192TIDY_ARGS_ := --checks="-*,llvm-include-order"
193TIDY_ARGS_NORMAL := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_NORMAL)))"
194TIDY_ARGS_COARSE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_COARSE)))"
195
196define process-tidy
197
198_TARG := $(OUT_DIR)/$1.tidy.ts
199_DEP := $(SRC_DIR)/$1
200
201TIDY_DEPS += $(_TARG)
202
203TIDY_ARGS:=$(TIDY_ARGS_$2)
204
205$(_TARG): $(_DEP)
206 mkdir -p $(dir $(_TARG))
207 $(CLANG_TIDY) $(_DEP) $(TIDY_ARGS) -- -x c++ $(CXXARGS)
208 touch $(_TARG)
209
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200210endef
211
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200212$(foreach pair,$(TIDY_FILES),$(eval $(call process-tidy,$(word 1, $(subst :, ,$(pair))),$(word 2, $(subst :, ,$(pair))))))
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200213
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200214#$(warning $(TIDY_DEPS))
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200215
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200216tidy: $(TIDY_DEPS)
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200217
218ifneq ($(MAKECMDGOALS), clean)
219-include $(DEPS)
220endif