瀏覽代碼

drm_hwcomposer: CI: Replace shell scripts with Makefile

This won't make much benefits for CI, but for local native builds will
significantly speed-up build cycle by allowing parallel build and by
using dependency tracking logic.

Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
Roman Stratiienko 2 年之前
父節點
當前提交
cef5c77ef9
共有 7 個文件被更改,包括 150 次插入131 次删除
  1. 0 42
      .ci/.common.sh
  2. 0 11
      .ci/.gitlab-ci-clang-build.sh
  3. 0 35
      .ci/.gitlab-ci-clang-tidy-coarse.sh
  4. 0 18
      .ci/.gitlab-ci-clang-tidy-fine.sh
  5. 146 0
      .ci/Makefile
  6. 3 16
      .gitlab-ci.yml
  7. 1 9
      presubmit.sh

+ 0 - 42
.ci/.common.sh

@@ -1,42 +0,0 @@
-INCLUDE_DIRS="-I. -I../libdrm/include/drm -Iinclude -I/usr/include/libdrm -I./.ci/android_headers -I./tests/test_include"
-
-CLANG="clang++-12"
-CLANG_TIDY="clang-tidy-12"
-
-CXXARGS="-fPIC -Wall -Wextra -Werror -DPLATFORM_SDK_VERSION=31 -D__ANDROID_API__=31"
-CXXARGS+=" -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS"
-CXXARGS+=" -fvisibility-inlines-hidden -std=gnu++17 -DHWC2_USE_CPP11 -DHWC2_INCLUDE_STRINGIFICATION -fno-rtti"
-
-BUILD_FILES=(
-backend/BackendClient.cpp
-backend/Backend.cpp
-backend/BackendManager.cpp
-backend/BackendRCarDu.cpp
-bufferinfo/BufferInfoGetter.cpp
-#bufferinfo/BufferInfoMapperMetadata.cpp
-bufferinfo/legacy/BufferInfoImagination.cpp
-bufferinfo/legacy/BufferInfoLibdrm.cpp
-bufferinfo/legacy/BufferInfoMaliHisi.cpp
-bufferinfo/legacy/BufferInfoMaliMediatek.cpp
-bufferinfo/legacy/BufferInfoMaliMeson.cpp
-bufferinfo/legacy/BufferInfoMinigbm.cpp
-compositor/DrmDisplayComposition.cpp
-compositor/DrmDisplayCompositor.cpp
-compositor/Planner.cpp
-drm/DrmConnector.cpp
-drm/DrmCrtc.cpp
-drm/DrmDevice.cpp
-drm/DrmEncoder.cpp
-drm/DrmFbImporter.cpp
-drm/DrmMode.cpp
-drm/DrmPlane.cpp
-drm/DrmProperty.cpp
-DrmHwcTwo.cpp
-drm/ResourceManager.cpp
-drm/UEventListener.cpp
-drm/VSyncWorker.cpp
-tests/worker_test.cpp
-utils/autolock.cpp
-#utils/hwcutils.cpp
-utils/Worker.cpp
-)

+ 0 - 11
.ci/.gitlab-ci-clang-build.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-. ./.ci/.common.sh
-
-set -xe
-
-for source in "${BUILD_FILES[@]}"
-do
-    filename=$(basename -- "$source")
-    $CLANG $source $INCLUDE_DIRS $CXXARGS -c -o /tmp/"${filename%.*}.o"
-done

+ 0 - 35
.ci/.gitlab-ci-clang-tidy-coarse.sh

@@ -1,35 +0,0 @@
-#!/bin/bash
-
-. ./.ci/.common.sh
-
-TIDY_COARSE_CHECKS="*,"
-TIDY_COARSE_CHECKS+="-hicpp-*,-llvmlibc-*,-fuchsia-*,-altera-*,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-pro-bounds-array-to-pointer-decay,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-pro-bounds-constant-array-index,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-pro-bounds-pointer-arithmetic,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-pro-type-cstyle-cast,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-pro-type-union-access,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-pro-type-vararg,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-avoid-magic-numbers,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-macro-usage,"
-TIDY_COARSE_CHECKS+="-cppcoreguidelines-avoid-c-arrays,"
-TIDY_COARSE_CHECKS+="-google-readability-braces-around-statements,"
-TIDY_COARSE_CHECKS+="-google-readability-casting,"
-TIDY_COARSE_CHECKS+="-misc-non-private-member-variables-in-classes,"
-TIDY_COARSE_CHECKS+="-modernize-avoid-c-arrays,"
-TIDY_COARSE_CHECKS+="-modernize-use-trailing-return-type,"
-TIDY_COARSE_CHECKS+="-readability-braces-around-statements,"
-TIDY_COARSE_CHECKS+="-readability-convert-member-functions-to-static,"
-TIDY_COARSE_CHECKS+="-readability-implicit-bool-conversion,"
-TIDY_COARSE_CHECKS+="-readability-identifier-naming,"
-TIDY_COARSE_CHECKS+="-readability-magic-numbers,"
-TIDY_COARSE_CHECKS+="-readability-use-anyofallof"
-
-TIDY_FILES=( "${BUILD_FILES[@]}" )
-
-set -xe
-
-for source in "${TIDY_FILES[@]}"
-do
-    $CLANG_TIDY $source --checks=$TIDY_COARSE_CHECKS -- -x c++ $INCLUDE_DIRS $CXXARGS
-done

+ 0 - 18
.ci/.gitlab-ci-clang-tidy-fine.sh

@@ -1,18 +0,0 @@
-#!/bin/bash
-
-. ./.ci/.common.sh
-
-TIDY_FILES=(
-drm/DrmFbImporter.h
-drm/DrmUnique.h
-utils/UniqueFd.h
-utils/log.h
-utils/properties.h
-)
-
-set -xe
-
-for source in "${TIDY_FILES[@]}"
-do
-    $CLANG_TIDY $source -- -x c++ $INCLUDE_DIRS $CXXARGS
-done

+ 146 - 0
.ci/Makefile

@@ -0,0 +1,146 @@
+
+INCLUDE_DIRS := . ../libdrm/include/drm include ./.ci/android_headers ./tests/test_include
+SYSTEM_INCLUDE_DIRS := /usr/include/libdrm
+
+CLANG := clang++-12
+CLANG_TIDY := clang-tidy-12
+OUT_DIR := /tmp/drm_hwcomposer/build/
+SRC_DIR := .
+
+CXXFLAGS := -fPIC -Wall -Wextra -Werror -DPLATFORM_SDK_VERSION=31 -D__ANDROID_API__=31
+CXXFLAGS += -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS
+CXXFLAGS += -fvisibility-inlines-hidden -std=gnu++17 -DHWC2_USE_CPP11 -DHWC2_INCLUDE_STRINGIFICATION -fno-rtti
+
+BUILD_FILES := \
+    backend/BackendClient.cpp \
+    backend/Backend.cpp \
+    backend/BackendManager.cpp \
+    backend/BackendRCarDu.cpp \
+    bufferinfo/BufferInfoGetter.cpp \
+    bufferinfo/legacy/BufferInfoImagination.cpp \
+    bufferinfo/legacy/BufferInfoLibdrm.cpp \
+    bufferinfo/legacy/BufferInfoMaliHisi.cpp \
+    bufferinfo/legacy/BufferInfoMaliMediatek.cpp \
+    bufferinfo/legacy/BufferInfoMaliMeson.cpp \
+    bufferinfo/legacy/BufferInfoMinigbm.cpp \
+    compositor/DrmDisplayComposition.cpp \
+    compositor/DrmDisplayCompositor.cpp \
+    compositor/Planner.cpp \
+    drm/DrmConnector.cpp \
+    drm/DrmCrtc.cpp \
+    drm/DrmDevice.cpp \
+    drm/DrmEncoder.cpp \
+    drm/DrmFbImporter.cpp \
+    drm/DrmMode.cpp \
+    drm/DrmPlane.cpp \
+    drm/DrmProperty.cpp \
+    DrmHwcTwo.cpp \
+    drm/ResourceManager.cpp \
+    drm/UEventListener.cpp \
+    drm/VSyncWorker.cpp \
+    tests/worker_test.cpp \
+    utils/autolock.cpp \
+    utils/Worker.cpp \
+
+#bufferinfo/BufferInfoMapperMetadata.cpp
+#utils/hwcutils.cpp
+
+TIDY_FILES_H := \
+    drm/DrmFbImporter.h \
+    drm/DrmUnique.h \
+    utils/UniqueFd.h \
+    utils/log.h \
+    utils/properties.h \
+
+TIDY_FILES_CPP := \
+
+TIDY_COARSE_CHECKS := * \
+    -hicpp-* -llvmlibc-* -fuchsia-* -altera-* \
+    -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
+    -cppcoreguidelines-pro-bounds-constant-array-index \
+    -cppcoreguidelines-pro-bounds-pointer-arithmetic \
+    -cppcoreguidelines-pro-type-cstyle-cast \
+    -cppcoreguidelines-pro-type-union-access \
+    -cppcoreguidelines-pro-type-vararg \
+    -cppcoreguidelines-avoid-magic-numbers \
+    -cppcoreguidelines-macro-usage \
+    -cppcoreguidelines-avoid-c-arrays \
+    -google-readability-braces-around-statements \
+    -google-readability-casting \
+    -misc-non-private-member-variables-in-classes \
+    -modernize-avoid-c-arrays \
+    -modernize-use-trailing-return-type \
+    -readability-braces-around-statements \
+    -readability-convert-member-functions-to-static \
+    -readability-implicit-bool-conversion \
+    -readability-identifier-naming \
+    -readability-magic-numbers \
+    -readability-use-anyofallof \
+
+.PHONY: all build tidy tidy-fine clean
+
+all: build tidy tidy-fine
+
+clean:
+	rm -rf $(OUT_DIR)/
+
+_OBJ := $(BUILD_FILES:.cpp=.o)
+OBJ  := $(patsubst %,$(OUT_DIR)/%,$(_OBJ))
+
+_TIDY_TS := $(BUILD_FILES:.cpp=.cpp.t_ts)
+TIDY_TS := $(patsubst %,$(OUT_DIR)/%,$(_TIDY_TS))
+
+_FINE_TIDY_TS := $(TIDY_FILES_CPP:.cpp=.cpp,ft_ts)
+_FINE_TIDY_TS += $(TIDY_FILES_H:.h=.h.ft_ts)
+FINE_TIDY_TS  := $(patsubst %,$(OUT_DIR)/%,$(_FINE_TIDY_TS))
+
+DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES))
+
+build: $(OBJ)
+
+tidy: $(TIDY_TS)
+
+tidy-fine: $(FINE_TIDY_TS)
+
+CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS)
+
+$(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp
+	mkdir -p $(dir $@)
+	$(CLANG) $< $(CXXARGS) -c -o $@
+
+$(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp
+	mkdir -p $(dir $@)
+	$(CLANG) $(CXXARGS) $< -MM -MT $(patsubst %.cpp,%.o,$<) -o $@
+
+space := $(subst ,, )
+comma := ,
+
+# TIDY
+define exec-tidy
+	mkdir -p $(dir $@)
+	$(CLANG_TIDY) $< --checks="$(subst $(space),$(comma),$(strip $(TIDY_COARSE_CHECKS)))" -- -x c++ $(CXXARGS)
+	touch $@
+endef
+
+$(OUT_DIR)/%.h.t_ts: $(SRC_DIR)/%.h $(OBJ)
+	$(exec-tidy)
+
+$(OUT_DIR)/%.cpp.t_ts: $(SRC_DIR)/%.cpp $(OBJ)
+	$(exec-tidy)
+
+# TIDY-FINE
+define exec-tidy-fine
+	mkdir -p $(dir $@)
+	$(CLANG_TIDY) $< -- -x c++ $(CXXARGS)
+	touch $@
+endef
+
+$(OUT_DIR)/%.cpp.ft_ts: $(SRC_DIR)/%.cpp $(OBJ)
+	$(exec-tidy-fine)
+
+$(OUT_DIR)/%.h.ft_ts: $(SRC_DIR)/%.h $(OBJ)
+	$(exec-tidy-fine)
+
+ifneq ($(MAKECMDGOALS), clean)
+-include $(DEPS)
+endif

+ 3 - 16
.gitlab-ci.yml

@@ -5,7 +5,7 @@ variables:
 
 before_script:
   - apt-get --quiet update --yes >/dev/null
-  - apt-get --quiet install --yes clang-12 clang-tidy-12 clang-format-12 git libdrm-dev blueprint-tools libgtest-dev >/dev/null
+  - apt-get --quiet install --yes clang-12 clang-tidy-12 clang-format-12 git libdrm-dev blueprint-tools libgtest-dev make >/dev/null
 
 stages:
   - build
@@ -13,7 +13,8 @@ stages:
 
 build:
   stage: build
-  script: "./.ci/.gitlab-ci-clang-build.sh"
+  script:
+    - make -f .ci/Makefile
   artifacts:
     when: on_failure
     untracked: true
@@ -24,17 +25,3 @@ checkstyle:
   artifacts:
     when: on_failure
     untracked: true
-
-tidy-coarse:
-  stage: style
-  script: "./.ci/.gitlab-ci-clang-tidy-coarse.sh"
-  artifacts:
-    when: on_failure
-    untracked: true
-
-tidy-fine:
-  stage: style
-  script: "./.ci/.gitlab-ci-clang-tidy-fine.sh"
-  artifacts:
-    when: on_failure
-    untracked: true

+ 1 - 9
presubmit.sh

@@ -4,18 +4,10 @@ set -e
 
 echo "Run native build:"
 
-./.ci/.gitlab-ci-clang-build.sh
+make -f .ci/Makefile -j12
 
 echo "Run style check:"
 
 ./.ci/.gitlab-ci-checkcommit.sh
 
-echo "Run coarse clang-tidy check:"
-
-./.ci/.gitlab-ci-clang-tidy-coarse.sh
-
-echo "Run fine clang-tidy check:"
-
-./.ci/.gitlab-ci-clang-tidy-fine.sh
-
 echo -e "\n\e[32m --- SUCCESS ---"