| # |
| # Copyright (c) 2018, Google, Inc. All rights reserved |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| # |
| # This makefile contains rules for building QEMU for running Trusty. |
| # It is expected that it will be included by the project that uses QEMU |
| # and the caller will configure the following variables: |
| # |
| # QEMU_ROOT - Root of qemu project |
| # QEMU_BUILD_BASE - location that will be used to store temp files and |
| # build results. |
| # QEMU_ARCH - qemu arch to build |
| # QEMU_TARGET - targets to build, use comma to separate targets |
| # if multiple targets are specified. |
| # |
| # The following variable is returned to the caller: |
| # QEMU_BIN - resulting qemu image |
| # QEMU_BUILD_BASE - location that will be used to store temp files and |
| # build results. |
| # |
| # |
| |
| QEMU_BIN:=$(QEMU_BUILD_BASE)/$(QEMU_ARCH)-softmmu/qemu-system-$(QEMU_ARCH) |
| QEMU_MAKEFILE:=$(QEMU_BUILD_BASE)/Makefile |
| |
| # Set of features disabled by the AOSP emulator. We don't need these features |
| # either, and we want minimal dependencies. |
| QEMU_AOSP_DISABLES := \ |
| --disable-attr \ |
| --disable-blobs \ |
| --disable-curl \ |
| --disable-curses \ |
| --disable-docs \ |
| --disable-glusterfs \ |
| --disable-gtk \ |
| --disable-guest-agent \ |
| --disable-libnfs \ |
| --disable-libiscsi \ |
| --disable-libssh2 \ |
| --disable-libusb \ |
| --disable-seccomp \ |
| --disable-spice \ |
| --disable-usb-redir \ |
| --disable-user \ |
| --disable-vde \ |
| --disable-vhdx \ |
| --disable-vhost-net \ |
| --disable-opengl \ |
| |
| # Warnings which pollute the build output and which can make us miss |
| # warnings in non-external code that we should be paying attention to. |
| QEMU_SUPPRESSED_WARNINGS := \ |
| -Wno-address-of-packed-member \ |
| -Wno-format-truncation \ |
| -Wno-stringop-truncation \ |
| -Wno-array-bounds \ |
| |
| $(QEMU_MAKEFILE): QEMU_ROOT:=$(QEMU_ROOT) |
| $(QEMU_MAKEFILE): QEMU_BUILD_BASE:=$(QEMU_BUILD_BASE) |
| $(QEMU_MAKEFILE): QEMU_TARGET:=$(QEMU_TARGET) |
| $(QEMU_MAKEFILE): QEMU_AOSP_DISABLES:=$(QEMU_AOSP_DISABLES) |
| $(QEMU_MAKEFILE): QEMU_SUPPRESSED_WARNINGS:=$(QEMU_SUPPRESSED_WARNINGS) |
| $(QEMU_MAKEFILE): |
| mkdir -p $(QEMU_BUILD_BASE) |
| #--with-git=true sets the "git" program to /bin/true - it essentially disables git |
| #--disable-git-update may look like what we want, but it requests manual intervention, not disables git |
| # TODO(b/148904400): Our prebuilt Clang can't build QEMU yet, and there is no |
| # prebuilts GCC, i.e. currently we can only build QEMU with host toolchain. On |
| # some hosts compiler will complain about stringop truncation. |
| cd $(QEMU_BUILD_BASE) && $(abspath $(QEMU_ROOT)/configure) \ |
| --target-list=$(QEMU_TARGET) --with-git=true --disable-werror \ |
| --extra-cflags="$(QEMU_SUPPRESSED_WARNINGS)" \ |
| --disable-gcrypt --disable-vnc-png $(QEMU_AOSP_DISABLES) \ |
| --python=$(BUILDTOOLS_BINDIR)/py3-cmd |
| |
| $(QEMU_BIN): QEMU_BUILD_BASE:=$(QEMU_BUILD_BASE) |
| $(QEMU_BIN): $(QEMU_MAKEFILE) .PHONY |
| $(MAKE) -C $(QEMU_BUILD_BASE) |
| |
| # Add QEMU_BIN to the list of project dependencies |
| EXTRA_BUILDDEPS += $(QEMU_BIN) |
| |
| QEMU_ARCH:= |
| QEMU_ROOT:= |
| QEMU_TARGET:= |
| QEMU_AOSP_DISABLES:= |
| QEMU_SUPPRESSED_WARNINGS:= |