mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-11 04:26:38 +00:00
Instead of requiring crosvm to be checked out via the chromeos manifest to access dependencies in the ChromeOS monorepo, this change adds git submodules to third_party/. The CI scripts and Cargo.toml are updated to use the new paths. BUG=b:194336213 TEST=git clone --recursive https://chromium.googlesource.com/chromiumos/platform/crosvm cd crosvm cargo test ./test_all ./ci/kokoro/simulate_all Change-Id: I9859d18176e21909ac3a140976fbd67cc14129bb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3049003 Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com> Reviewed-by: Chirantan Ekbote <chirantan@chromium.org>
100 lines
2.7 KiB
Makefile
100 lines
2.7 KiB
Makefile
# Copyright 2021 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
#
|
|
# This makefile is run by the ./ci/crosvm_* containers to build native third
|
|
# party dependencies required by crosvm.
|
|
#
|
|
# Setting TARGET_ARCH=aarch64 enables cross-compilation for aarch64.
|
|
|
|
SRC ?= /workspace/src/crosvm
|
|
BUILD ?= /workspace/scratch/build
|
|
LIB ?= /workspace/scratch/lib
|
|
TARGET_ARCH ?=
|
|
|
|
MAKEFILE_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
|
|
|
ifeq ($(TARGET_ARCH),aarch64)
|
|
CROSS_COMPILE = aarch64-linux-gnu-
|
|
MESON_ARGS = --cross-file $(BUILD)/meson-cross
|
|
else
|
|
CROSS_COMPILE =
|
|
MESON_ARGS =
|
|
endif
|
|
|
|
|
|
all: $(LIB) tpm2 minijail minigbm virglrenderer
|
|
ldconfig $(LIB)
|
|
|
|
clean:
|
|
rm -rf $(BUILD) $(LIB)
|
|
|
|
# Targets to build the needed chromiumos projects.
|
|
#
|
|
# These are phony targets so that we can delegate the dirty-check to the
|
|
# underlying build system for each library.
|
|
|
|
tpm2:
|
|
mkdir -p $(BUILD)/tpm2
|
|
$(MAKE) -C $(SRC)/tpm2-sys/libtpm2 \
|
|
obj=$(BUILD)/tpm2 \
|
|
AR=$(CROSS_COMPILE)ar \
|
|
CC=$(CROSS_COMPILE)gcc \
|
|
OBJCOPY=$(CROSS_COMPILE)objcopy V=1
|
|
|
|
minijail:
|
|
mkdir -p $(BUILD)/minijail
|
|
$(MAKE) -C $(SRC)/third_party/minijail \
|
|
OUT=$(BUILD)/minijail \
|
|
CROSS_COMPILE=$(CROSS_COMPILE)
|
|
|
|
minigbm:
|
|
mkdir -p $(BUILD)/minigbm
|
|
$(MAKE) -C $(SRC)/third_party/minigbm \
|
|
OUT=$(BUILD)/minigbm \
|
|
CROSS_COMPILE=$(CROSS_COMPILE)
|
|
|
|
virglrenderer: minigbm $(BUILD)/meson-cross
|
|
meson setup \
|
|
$(BUILD)/virglrenderer \
|
|
$(SRC)/third_party/virglrenderer \
|
|
$(MESON_ARGS)
|
|
|
|
CPATH=$(SRC)/third_party/minigbm \
|
|
meson compile -C $(BUILD)/virglrenderer
|
|
|
|
|
|
# File needed by meson for cross-compilation.
|
|
$(BUILD)/meson-cross:
|
|
ifeq ($(TARGET_ARCH),aarch64)
|
|
mkdir -p $(BUILD)
|
|
/usr/share/meson/debcrossgen --arch arm64 -o $@
|
|
else
|
|
mkdir -p $(BUILD)
|
|
touch $@
|
|
endif
|
|
|
|
# Sets up the $(LIB) directory with links to the generated binaries in $(BUILD).
|
|
$(LIB):
|
|
mkdir -p $(LIB) $(LIB)/pkgconfig
|
|
|
|
# tpm2
|
|
ln -sf $(BUILD)/tpm2/libtpm2.a $(LIB)/libtpm2.a
|
|
ln -sf $(MAKEFILE_DIR)/pkgconfig/libtpm2.pc $(LIB)/pkgconfig/
|
|
|
|
# minijail
|
|
ln -sf $(BUILD)/minijail/libminijail.so $(LIB)
|
|
ln -sf $(LIB)/libminijail.so $(LIB)/libminijail.so.1
|
|
ln -sf $(MAKEFILE_DIR)/pkgconfig/libminijail.pc $(LIB)/pkgconfig/
|
|
|
|
# minigbm
|
|
ln -sf $(BUILD)/minigbm/libminigbm.so.1.0.0 $(LIB)/libgbm.so
|
|
ln -sf $(LIB)/libgbm.so $(LIB)/libgbm.so.1
|
|
ln -sf $(SRC)/third_party/minigbm/gbm.pc $(LIB)/pkgconfig/
|
|
|
|
# virglrenderer
|
|
ln -sf $(BUILD)/virglrenderer/src/libvirglrenderer.so $(LIB)
|
|
ln -sf $(LIB)/libvirglrenderer.so $(LIB)/libvirglrenderer.so.1
|
|
ln -sf $(BUILD)/virglrenderer/virglrenderer.pc $(LIB)/pkgconfig/
|
|
|
|
.PHONY: all clean tpm2 minijail sysroot minigbm virglrenderer
|