Since we're now using aospless archive for meson.build, we can use headers from there and remove .ci/android_headers/ directory completely. Adding aospless cflags also raised some new tidy checks fails, which were fixed by this commit. Since clang-tidy now relies on aospless files, running CI on the host can't be supported and removed. Running CI within the docker container is the only option left. Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
85 lines
3.5 KiB
Makefile
85 lines
3.5 KiB
Makefile
#!/usr/bin/make
|
|
|
|
DOCKER_BIN := $(shell command -v docker 2> /dev/null)
|
|
NPROCS:=$(shell grep -c ^processor /proc/cpuinfo)
|
|
|
|
DOCKERFILE := .ci/Dockerfile
|
|
IMAGE_NAME := drmhwc_ci
|
|
|
|
# We can't run style and bpfmt check in docker
|
|
# when repo is within AOSP tree, will run it locally.
|
|
GIT_IS_SYMLINK:=$(shell test -L .git && echo true)
|
|
|
|
define print_no_docker_err
|
|
$(warning Please install docker, e.g. for Ubuntu:)
|
|
$(warning $$ sudo apt install docker.io)
|
|
$(warning $$ sudo usermod -aG docker $$USER)
|
|
$(warning and reboot your PC)
|
|
$(error Aborting...)
|
|
endef
|
|
|
|
.PHONY : help prepare shell ci_fast ci ci_cleanup build_deploy bd local_presubmit local_cleanup
|
|
.DEFAULT_GOAL := help
|
|
|
|
help: ## Show this help
|
|
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
|
|
PREPARE:=.out/prepare_docker.timestamp
|
|
$(PREPARE): $(DOCKERFILE)
|
|
$(if $(DOCKER_BIN),,$(call print_no_docker_err))
|
|
mkdir -p $(dir $@)
|
|
$(DOCKER_BIN) build -t local/build-env -f $(DOCKERFILE) .;
|
|
$(DOCKER_BIN) stop $(IMAGE_NAME) || true
|
|
$(DOCKER_BIN) rm $(IMAGE_NAME) || true
|
|
$(DOCKER_BIN) run -itd --name $(IMAGE_NAME) --network="host" -v $(shell pwd):/home/user/drm_hwcomposer local/build-env
|
|
@touch $@
|
|
|
|
prepare: $(PREPARE)
|
|
prepare: ## Build and run Docker image
|
|
|
|
shell: $(PREPARE)
|
|
shell: ## Start shell into a container
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash
|
|
|
|
ci_fast: $(PREPARE)
|
|
ci_fast: ## Run meson build for arm64 in docker container
|
|
@echo "Run meson cross-build for Android:"
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -C ~/aospless all"
|
|
|
|
ci: $(PREPARE)
|
|
ci: ## Run presubmit within the docker container
|
|
@echo "Run native build:"
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -f .ci/Makefile -j$(NPROCS)"
|
|
@echo "Run meson cross-build for Android:"
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -C ~/aospless all"
|
|
@echo "Run style check:"
|
|
$(if $(GIT_IS_SYMLINK), \
|
|
./.ci/.gitlab-ci-checkcommit.sh, \
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "./.ci/.gitlab-ci-checkcommit.sh")
|
|
@echo "\n\e[32m --- SUCCESS ---\n"
|
|
|
|
ci_cleanup: ## Cleanup after 'make ci'
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -f .ci/Makefile clean "
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "rm -rf ~/aospless/build"
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "rm -rf ~/aospless/install"
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "rm -rf ~/aospless/out_src"
|
|
|
|
build_deploy: $(PREPARE)
|
|
build_deploy: ## Build for Andoid and deploy onto the target device (require active adb device connected)
|
|
$(if $(filter $(shell adb shell getprop ro.bionic.arch),arm64),,$(error arm64 only is supported at the moment))
|
|
adb root && adb remount vendor
|
|
mkdir -p .out/arm64
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "make -C ~/aospless all"
|
|
$(DOCKER_BIN) exec -it $(IMAGE_NAME) bash -c "cp -r ~/aospless/install/* ~/drm_hwcomposer/.out/arm64"
|
|
adb push .out/arm64/vendor/lib64/hw/hwcomposer.drm.so /vendor/lib64/hw/hwcomposer.drm.so
|
|
adb shell stop
|
|
adb shell stop vendor.hwcomposer-2-1 && adb shell start vendor.hwcomposer-2-1 || true
|
|
adb shell stop vendor.hwcomposer-2-2 && adb shell start vendor.hwcomposer-2-2 || true
|
|
adb shell stop vendor.hwcomposer-2-3 && adb shell start vendor.hwcomposer-2-3 || true
|
|
adb shell stop vendor.hwcomposer-2-4 && adb shell start vendor.hwcomposer-2-4 || true
|
|
bash -c '[[ "$$HWCLOG" -eq "1" ]] && adb logcat -c || true'
|
|
adb shell start
|
|
bash -c '[[ "$$HWCLOG" -eq "1" ]] && adb logcat | grep -i hwc || true'
|
|
|
|
bd: build_deploy
|
|
bd: ## Alias for build_deploy
|