blob: 1f84496fb0da12ec5efcd7120aa734881bad2924 [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
Roman Stratiienko5741bbd2021-12-30 18:12:26 +02007OUT_DIR := /tmp/drm_hwcomposer/build
Roman Stratiienkocef5c772021-12-22 16:22:24 +02008SRC_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
Roman Stratiienko5741bbd2021-12-30 18:12:26 +020014SKIP_FILES := \
15 bufferinfo/BufferInfoMapperMetadata.cpp
Roman Stratiienkocef5c772021-12-22 16:22:24 +020016
Roman Stratiienko5741bbd2021-12-30 18:12:26 +020017TIDY_FILES_OVERRIDE := \
18 backend/BackendManager.h:COARSE \
19 bufferinfo/legacy/BufferInfoImagination.cpp:COARSE \
20 bufferinfo/legacy/BufferInfoLibdrm.cpp:COARSE \
21 bufferinfo/legacy/BufferInfoMaliHisi.cpp:COARSE \
22 bufferinfo/legacy/BufferInfoMaliMediatek.cpp:COARSE \
23 bufferinfo/legacy/BufferInfoMaliMeson.cpp:COARSE \
24 bufferinfo/legacy/BufferInfoMinigbm.cpp:COARSE \
25 compositor/DrmDisplayComposition.cpp:COARSE \
26 compositor/DrmDisplayComposition.h:COARSE \
27 compositor/DrmDisplayCompositor.cpp:COARSE \
28 compositor/DrmDisplayCompositor.h:COARSE \
29 drm/DrmFbImporter.h:FINE \
30 drm/DrmMode.h:COARSE \
31 drm/DrmDevice.h:COARSE \
32 drm/DrmProperty.h:COARSE \
33 drm/DrmConnector.h:COARSE \
34 drm/DrmCrtc.h:COARSE \
35 drm/DrmUnique.h:FINE \
36 drm/DrmEncoder.h:COARSE \
37 drm/DrmConnector.cpp:COARSE \
38 drm/DrmDevice.cpp:COARSE \
39 drm/DrmPlane.cpp:COARSE \
40 drm/DrmProperty.cpp:COARSE \
41 drm/UEventListener.cpp:COARSE \
42 drm/VSyncWorker.cpp:COARSE \
43 tests/worker_test.cpp:COARSE \
44 utils/Worker.h:COARSE \
45 utils/UniqueFd.h:FINE \
46 utils/log.h:FINE \
47 utils/properties.h:FINE \
48 DrmHwcTwo.cpp:COARSE \
49 DrmHwcTwo.h:COARSE \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020050
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020051TIDY_CHECKS_NORMAL := * \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020052 -hicpp-* -llvmlibc-* -fuchsia-* -altera-* \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020053 -cppcoreguidelines-special-member-functions \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020054 -llvm-header-guard \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020055 -cppcoreguidelines-avoid-c-arrays \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020056 -cppcoreguidelines-pro-type-vararg \
57 -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
58 -cppcoreguidelines-pro-bounds-constant-array-index \
59 -cppcoreguidelines-avoid-magic-numbers \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020060 -google-readability-braces-around-statements \
61 -google-readability-casting \
62 -misc-non-private-member-variables-in-classes \
63 -modernize-avoid-c-arrays \
Roman Stratiienkofc014f52021-12-23 19:04:29 +020064 -modernize-use-nodiscard \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020065 -modernize-use-trailing-return-type \
66 -readability-braces-around-statements \
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020067
68TIDY_CHECKS_COARSE := \
69 $(TIDY_CHECKS_NORMAL) \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +020070 -cppcoreguidelines-non-private-member-variables-in-classes \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020071 -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
72 -cppcoreguidelines-pro-bounds-constant-array-index \
73 -cppcoreguidelines-pro-bounds-pointer-arithmetic \
74 -cppcoreguidelines-pro-type-cstyle-cast \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +020075 -cppcoreguidelines-pro-type-reinterpret-cast \
76 -cppcoreguidelines-pro-type-static-cast-downcast \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020077 -cppcoreguidelines-pro-type-union-access \
78 -cppcoreguidelines-pro-type-vararg \
79 -cppcoreguidelines-avoid-magic-numbers \
80 -cppcoreguidelines-macro-usage \
81 -cppcoreguidelines-avoid-c-arrays \
82 -google-readability-braces-around-statements \
83 -google-readability-casting \
84 -misc-non-private-member-variables-in-classes \
85 -modernize-avoid-c-arrays \
86 -modernize-use-trailing-return-type \
Roman Stratiienkoe78235c2021-12-23 17:36:12 +020087 -modernize-use-nodiscard \
Roman Stratiienkocef5c772021-12-22 16:22:24 +020088 -readability-braces-around-statements \
89 -readability-convert-member-functions-to-static \
90 -readability-implicit-bool-conversion \
91 -readability-identifier-naming \
92 -readability-magic-numbers \
93 -readability-use-anyofallof \
94
Roman Stratiienko5741bbd2021-12-30 18:12:26 +020095.PHONY: all build tidy clean
Roman Stratiienko24a7fc42021-12-23 16:25:20 +020096
Roman Stratiienko5741bbd2021-12-30 18:12:26 +020097all: build tidy
Roman Stratiienkocef5c772021-12-22 16:22:24 +020098
99clean:
100 rm -rf $(OUT_DIR)/
101
Roman Stratiienko5741bbd2021-12-30 18:12:26 +0200102# Build
103
104BUILD_FILES_AUTO := $(shell find -L $(SRC_DIR) -not -path '*/\.*' -not -path '*/tests/*' -path '*.cpp')
105SKIP_FILES_path := $(foreach file,$(SKIP_FILES),$(SRC_DIR)/$(file))
106
107BUILD_FILES := $(subst ./,,$(filter-out $(SKIP_FILES_path),$(BUILD_FILES_AUTO)))
108
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200109_OBJ := $(BUILD_FILES:.cpp=.o)
110OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ))
111
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200112DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES))
113
114build: $(OBJ)
115
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200116CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS)
117
118$(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp
119 mkdir -p $(dir $@)
120 $(CLANG) $< $(CXXARGS) -c -o $@
121
122$(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp
123 mkdir -p $(dir $@)
Roman Stratiienko35112732021-12-23 13:41:13 +0200124 $(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200125
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200126# TIDY
Roman Stratiienko5741bbd2021-12-30 18:12:26 +0200127TIDY_FILES_AUTO := $(shell find -L $(SRC_DIR) -not -path '*/\.*' -not -path '*/tests/*' \( -path '*.cpp' -o -path '*.h' \))
128
129TIDY_FILES_AUTO_filtered := $(filter-out $(SKIP_FILES_path),$(TIDY_FILES_AUTO))
130
131TIDY_FILES_OVERRIDE_path := $(foreach pair,$(TIDY_FILES_OVERRIDE),$(SRC_DIR)/$(pair))
132
133TIDY_FILES_OVERRIDE_name_only := $(foreach pair,$(TIDY_FILES_OVERRIDE_path),$(word 1, $(subst :, ,$(pair))))
134
135TIDY_FILES := $(sort $(TIDY_FILES_AUTO_filtered) $(TIDY_FILES_OVERRIDE_name_only))
136
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200137space := $(subst ,, )
138comma := ,
139
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200140TIDY_ARGS_FINE :=
141TIDY_ARGS_NONE := --checks="-*,llvm-include-order"
142TIDY_ARGS_ := --checks="-*,llvm-include-order"
143TIDY_ARGS_NORMAL := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_NORMAL)))"
144TIDY_ARGS_COARSE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_COARSE)))"
145
146define process-tidy
147
148_TARG := $(OUT_DIR)/$1.tidy.ts
149_DEP := $(SRC_DIR)/$1
150
151TIDY_DEPS += $(_TARG)
152
Roman Stratiienko5741bbd2021-12-30 18:12:26 +0200153TIDY_LEVEL_1 := $$(strip $$(foreach pair,$$(TIDY_FILES_OVERRIDE_path),$$(if $$(filter $$(word 1, $$(subst :, ,$$(pair))),$1),$$(word 2, $$(subst :, ,$$(pair))),)))
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200154
Roman Stratiienko5741bbd2021-12-30 18:12:26 +0200155TIDY_LEVEL_2 := $$(if $$(TIDY_LEVEL_1),$$(TIDY_LEVEL_1),NORMAL)
156
157TIDY_ARGS := $$(TIDY_ARGS_$$(TIDY_LEVEL_2))
158
159$$(_TARG): _DEP := $$(_DEP)
160$$(_TARG): _TARG := $$(_TARG)
161$$(_TARG): TIDY_ARGS := $$(TIDY_ARGS)
162$$(_TARG): $$(_DEP)
163 mkdir -p $$(dir $$(_TARG))
164 $$(CLANG_TIDY) $$(_DEP) $$(TIDY_ARGS) -- -x c++ $$(CXXARGS)
165 touch $$(_TARG)
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200166
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200167endef
168
Roman Stratiienko5741bbd2021-12-30 18:12:26 +0200169$(foreach file,$(TIDY_FILES),$(eval $(call process-tidy,$(file))))
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200170
Roman Stratiienko24a7fc42021-12-23 16:25:20 +0200171tidy: $(TIDY_DEPS)
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200172
173ifneq ($(MAKECMDGOALS), clean)
174-include $(DEPS)
175endif