1# Copyright (C) 2020 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
15
16# Package binary build of Trusty, QEMU, AOSP, and scripts for standalone use
17
18# Inputs:
19# QEMU_PACKAGE_ARCHIVE: output package archive to create (.zip or .tar.gz)
20# QEMU_PACKAGE_FILES: files and folders to include in the package archive
21# 		These files/folders must be valid make targets, as they will be included
22# 		as pre-requisites to the package zip.
23# QEMU_PACKAGE_EXTRA_FILES: additional files and folders to include in the
24# 		package archive, which are not make targets. These files must be created
25# 		by a target in QEMU_PACKAGE_FILES.
26
27QEMU_PACKAGE_LICENSE := $(BUILDDIR)/LICENSE
28
29ifeq (,$(QEMU_PREBUILTS))
30QEMU_PACKAGE_LICENSE_FILES := \
31	$(call FIND_EXTERNAL,qemu/LICENSE) \
32	$(call FIND_EXTERNAL,qemu/COPYING) \
33	$(call FIND_EXTERNAL,linux/COPYING) \
34	$(call FIND_EXTERNAL,linux/LICENSES/preferred/GPL-2.0) \
35	$(call FIND_EXTERNAL,linux/LICENSES/exceptions/Linux-syscall-note) \
36
37else
38QEMU_PACKAGE_LICENSE_FILES := $(QEMU_PREBUILTS)/../NOTICE
39endif
40
41QEMU_PACKAGE_LICENSE_FILES += \
42	$(call FIND_EXTERNAL,arm-trusted-firmware/docs/license.rst) \
43	prebuilts/android-emulator/NOTICE \
44
45# Some of these files might be missing
46QEMU_PACKAGE_LICENSE_FILES := $(wildcard $(QEMU_PACKAGE_LICENSE_FILES))
47
48# TODO: Unify with SDK license construction when it lands
49$(QEMU_PACKAGE_LICENSE): LOCAL_DIR := $(GET_LOCAL_DIR)
50$(QEMU_PACKAGE_LICENSE): $(QEMU_PACKAGE_LICENSE_FILES)
51	@$(MKDIR)
52	@echo Generating QEMU package license
53	$(NOECHO)rm -f $@.tmp
54	$(NOECHO)cat $(LOCAL_DIR)/../LICENSE >> $@.tmp;
55	$(NOECHO)for license in $^; do \
56		printf "\n-------------------------------------------------------------------\n" >> $@.tmp;\
57		printf "Copied from $$license\n\n\n" >> $@.tmp;\
58		cat "$$license" >> $@.tmp;\
59		done
60	$(call TESTANDREPLACEFILE,$@.tmp,$@)
61
62QEMU_PACKAGE_FILES += $(QEMU_PACKAGE_LICENSE)
63
64ifneq (,$(filter %.zip,$(QEMU_PACKAGE_ARCHIVE)))
65$(QEMU_PACKAGE_ARCHIVE): BUILDDIR := $(BUILDDIR)
66$(QEMU_PACKAGE_ARCHIVE): QEMU_PACKAGE_EXTRA_FILES := $(QEMU_PACKAGE_EXTRA_FILES)
67$(QEMU_PACKAGE_ARCHIVE): $(QEMU_PACKAGE_FILES)
68	@$(MKDIR)
69	@echo Creating QEMU archive package
70	$(NOECHO)rm -f $@
71	$(NOECHO)(cd $(BUILDDIR) && zip -q -u -r $@ $(subst $(BUILDDIR)/,,$^))
72	$(NOECHO)(cd $(BUILDDIR) && zip -q -u -r $@ $(subst $(BUILDDIR)/,,$(QEMU_PACKAGE_EXTRA_FILES)))
73else
74
75ifneq (,$(filter %.tar.gz,$(QEMU_PACKAGE_ARCHIVE)))
76$(QEMU_PACKAGE_ARCHIVE): BUILDDIR := $(BUILDDIR)
77$(QEMU_PACKAGE_ARCHIVE): QEMU_PACKAGE_EXTRA_FILES := $(QEMU_PACKAGE_EXTRA_FILES)
78$(QEMU_PACKAGE_ARCHIVE): $(QEMU_PACKAGE_FILES)
79	@$(MKDIR)
80	@echo Creating QEMU archive package
81	$(NOECHO)rm -f $@
82	$(NOECHO)(cd $(BUILDDIR) && tar -c -z -f $@ $(subst $(BUILDDIR)/,,$^) $(subst $(BUILDDIR)/,,$(QEMU_PACKAGE_EXTRA_FILES)))
83
84else
85$(error QEMU_PACKAGE_ARCHIVE must end in either .zip or .tar.gz)
86endif
87
88endif
89
90EXTRA_BUILDDEPS += $(QEMU_PACKAGE_ARCHIVE)
91
92QEMU_PACKAGE_CONFIG :=
93QEMU_PACKAGE_FILES :=
94QEMU_PACKAGE_EXTRA_FILES :=
95QEMU_PACKAGE_LICENSE :=
96QEMU_PACKAGE_LICENSE_FILES :=
97QEMU_PACKAGE_ARCHIVE :=
98