2018-03-07 21:01:19 +08:00
|
|
|
#
|
|
|
|
# ACRN-DM
|
|
|
|
#
|
2018-07-09 15:50:44 +08:00
|
|
|
include ../VERSION
|
|
|
|
FULL_VERSION=$(MAJOR_VERSION).$(MINOR_VERSION)$(EXTRA_VERSION)
|
2018-03-07 21:01:19 +08:00
|
|
|
BASEDIR := $(shell pwd)
|
|
|
|
DM_OBJDIR ?= $(CURDIR)/build
|
2018-08-06 10:09:27 +08:00
|
|
|
DM_BUILD_VERSION ?=
|
|
|
|
DM_BUILD_TAG ?=
|
2018-03-07 21:01:19 +08:00
|
|
|
|
2018-03-28 12:47:25 +08:00
|
|
|
CC ?= gcc
|
2018-03-07 21:01:19 +08:00
|
|
|
|
|
|
|
CFLAGS := -g -O0 -std=gnu11
|
|
|
|
CFLAGS += -D_GNU_SOURCE
|
|
|
|
CFLAGS += -DNO_OPENSSL
|
|
|
|
CFLAGS += -m64
|
|
|
|
CFLAGS += -Wall -ffunction-sections
|
|
|
|
CFLAGS += -Werror
|
2018-10-23 15:02:24 +08:00
|
|
|
CFLAGS += -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
|
2018-04-12 11:36:28 +08:00
|
|
|
CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing
|
2018-08-22 17:03:10 +08:00
|
|
|
CFLAGS += -fpie
|
2018-03-07 21:01:19 +08:00
|
|
|
|
|
|
|
CFLAGS += -I$(BASEDIR)/include
|
|
|
|
CFLAGS += -I$(BASEDIR)/include/public
|
2018-10-23 16:51:06 +08:00
|
|
|
CFLAGS += -I$(DM_OBJDIR)/include
|
2018-05-30 02:16:56 +08:00
|
|
|
CFLAGS += -I$(TOOLS_OUT)
|
2018-03-07 21:01:19 +08:00
|
|
|
|
2019-01-14 14:42:02 +08:00
|
|
|
ifneq (, $(DM_ASL_COMPILER))
|
|
|
|
CFLAGS += -DASL_COMPILER=\"$(DM_ASL_COMPILER)\"
|
|
|
|
endif
|
|
|
|
|
2018-02-11 15:51:35 +08:00
|
|
|
GCC_MAJOR=$(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1)
|
|
|
|
GCC_MINOR=$(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1)
|
|
|
|
|
|
|
|
#enable stack overflow check
|
|
|
|
STACK_PROTECTOR := 1
|
|
|
|
|
|
|
|
ifdef STACK_PROTECTOR
|
|
|
|
ifeq (true, $(shell [ $(GCC_MAJOR) -gt 4 ] && echo true))
|
|
|
|
CFLAGS += -fstack-protector-strong
|
|
|
|
else
|
|
|
|
ifeq (true, $(shell [ $(GCC_MAJOR) -eq 4 ] && [ $(GCC_MINOR) -ge 9 ] && echo true))
|
|
|
|
CFLAGS += -fstack-protector-strong
|
|
|
|
else
|
|
|
|
CFLAGS += -fstack-protector
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
LDFLAGS += -Wl,-z,noexecstack
|
2018-02-11 16:35:15 +08:00
|
|
|
LDFLAGS += -Wl,-z,relro,-z,now
|
2018-08-22 17:03:10 +08:00
|
|
|
LDFLAGS += -pie
|
2018-05-30 02:16:56 +08:00
|
|
|
LDFLAGS += -L$(TOOLS_OUT)
|
2018-02-11 15:51:35 +08:00
|
|
|
|
2018-03-07 21:01:19 +08:00
|
|
|
LIBS = -lrt
|
|
|
|
LIBS += -lpthread
|
|
|
|
LIBS += -lcrypto
|
|
|
|
LIBS += -lpciaccess
|
|
|
|
LIBS += -lz
|
|
|
|
LIBS += -luuid
|
2018-04-14 11:22:07 +08:00
|
|
|
LIBS += -lusb-1.0
|
2018-05-30 02:16:56 +08:00
|
|
|
LIBS += -lacrn-mngr
|
2018-03-07 21:01:19 +08:00
|
|
|
|
dm: add string convert API
As function sscanf is banned, to get value from parameter buffer,strto*
is recommended. To reduce the inspection code when using strto*, it's
better to use a string convert API.
Usage:
For virtio-blk, it has parameters:
range=<start lba>/<subfile size>
sscanf:
if (sscanf(cp, "range=%ld/%ld", &sub_file_start_lba,
&sub_file_size) == 2)
sub_file_assign = 1;
string API:
if (strsep(&cp, "=") &&
!dm_strtol(cp, &cp, 10, &sub_file_start_lba) &&
*cp == '/' &&
!dm_strtol(cp + 1, &cp, 10, &sub_file_size))
sub_file_assign = 1;
Tracked-on: #1496
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Reviewed-by: Shuo Liu <shuo.a.liu@intel.com>
Acked-by: Yin Fengwei <fengwei.yin@intel.com>
2018-10-17 02:50:04 +08:00
|
|
|
# lib
|
|
|
|
SRCS += lib/dm_string.c
|
|
|
|
|
2018-03-07 21:01:19 +08:00
|
|
|
# hw
|
2018-05-09 11:30:55 +08:00
|
|
|
SRCS += hw/block_if.c
|
|
|
|
SRCS += hw/usb_core.c
|
|
|
|
SRCS += hw/uart_core.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio.c
|
|
|
|
SRCS += hw/pci/virtio/virtio_kernel.c
|
2018-08-10 14:51:06 +08:00
|
|
|
SRCS += hw/pci/virtio/vhost.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/platform/usb_mouse.c
|
2018-04-15 17:59:21 +08:00
|
|
|
SRCS += hw/platform/usb_pmapper.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/platform/atkbdc.c
|
|
|
|
SRCS += hw/platform/ps2mouse.c
|
|
|
|
SRCS += hw/platform/rtc.c
|
2018-09-28 04:51:55 +08:00
|
|
|
SRCS += hw/platform/pit.c
|
2019-01-11 11:44:30 +08:00
|
|
|
SRCS += hw/platform/hpet.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/platform/ps2kbd.c
|
|
|
|
SRCS += hw/platform/ioapic.c
|
|
|
|
SRCS += hw/platform/cmos_io.c
|
2018-04-10 19:14:38 +08:00
|
|
|
SRCS += hw/platform/ioc.c
|
2018-04-13 14:55:21 +08:00
|
|
|
SRCS += hw/platform/ioc_cbc.c
|
2018-05-09 11:30:55 +08:00
|
|
|
SRCS += hw/platform/acpi/acpi.c
|
|
|
|
SRCS += hw/platform/acpi/acpi_pm.c
|
2018-05-28 05:32:06 +08:00
|
|
|
SRCS += hw/platform/rpmb/rpmb_sim.c
|
|
|
|
SRCS += hw/platform/rpmb/rpmb_backend.c
|
2019-02-21 10:57:44 +08:00
|
|
|
SRCS += hw/platform/rpmb/att_keybox.c
|
2018-09-13 15:58:45 +08:00
|
|
|
SRCS += hw/platform/tpm/tpm_emulator.c
|
2018-08-14 10:02:52 +08:00
|
|
|
SRCS += hw/platform/tpm/tpm_crb.c
|
2018-08-16 13:58:24 +08:00
|
|
|
SRCS += hw/platform/tpm/tpm.c
|
2018-10-16 10:41:53 +08:00
|
|
|
SRCS += hw/platform/debugexit.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/pci/wdt_i6300esb.c
|
|
|
|
SRCS += hw/pci/lpc.c
|
|
|
|
SRCS += hw/pci/xhci.c
|
|
|
|
SRCS += hw/pci/core.c
|
|
|
|
SRCS += hw/pci/virtio/virtio_console.c
|
|
|
|
SRCS += hw/pci/virtio/virtio_block.c
|
2018-04-16 08:35:23 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_input.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/pci/ahci.c
|
|
|
|
SRCS += hw/pci/hostbridge.c
|
2018-06-15 09:08:47 +08:00
|
|
|
SRCS += hw/pci/platform_gsi_info.c
|
|
|
|
SRCS += hw/pci/gsi_sharing.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/pci/passthrough.c
|
2018-06-26 10:05:20 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_audio.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_net.c
|
|
|
|
SRCS += hw/pci/virtio/virtio_rnd.c
|
2018-07-17 04:47:51 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_ipu.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_hyper_dmabuf.c
|
2018-10-16 06:52:36 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_mei.c
|
2018-10-29 15:22:34 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_coreu.c
|
2018-11-26 11:08:40 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_hdcp.c
|
2018-05-16 10:41:33 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_rpmb.c
|
2019-01-10 09:51:48 +08:00
|
|
|
SRCS += hw/pci/virtio/virtio_gpio.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += hw/pci/irq.c
|
|
|
|
SRCS += hw/pci/uart.c
|
2018-03-29 23:05:04 +08:00
|
|
|
SRCS += hw/pci/gvt.c
|
DM: implement emulated npk pci device
The Intel Trace Hub (aka. North Peak, NPK) is a trace aggregator for
Software, Firmware, and Hardware. On the virtualization platform, it
can be used to output the traces from SOS/UOS/Hypervisor/FW together
with unified timestamps.
There are 2 software visible MMIO space in the npk pci device. One is
the CSR which maps the configuration registers, and the other is the
STMR which is organized as many Masters, and used to send the traces.
Each Master has a fixed number of Channels, which is 128 on GP. Each
channel occupies 64B, so the offset of each Master is 8K (64B*128).
Here is the detailed layout of STMR:
M=NPK_SW_MSTR_STP (1024 on GP)
+-------------------+
| m[M],c[C-1] |
Base(M,C-1) +-------------------+
| ... |
+-------------------+
| m[M],c[0] |
Base(M,0) +-------------------+
| ... |
+-------------------+
| m[i+1],c[1] |
Base(i+1,1) +-------------------+
| m[i+1],c[0] |
Base(i+1,0) +-------------------+
| ... |
+-------------------+
| m[i],c[1] |
Base(i,1)=SW_BAR+0x40 +-------------------+
| m[i],c[0] | 64B
Base(i,0)=SW_BAR +-------------------+
i=NPK_SW_MSTR_STRT (256 on GP)
CSR and STMR are treated differently in npk virtualization because:
1. CSR configuration should come from just one OS, instead of each OS.
In our case, it should come from SOS.
2. For performance and timing concern, the traces from each OS should
be written to STMR directly.
Based on these, the npk virtualization is implemented in this way:
1. The physical CSR is owned by SOS, and dm/npk emulates a software
one for the UOS, to keep the npk driver on UOS unchanged. Some CSR
initial values are configured to make the UOS npk driver think it
is working on a real npk. The CSR configuration from UOS is ignored
by dm, and it will not bring any side-effect. Because traces are the
only things needed from UOS, the location to send traces to and the
trace format are not affected by the CSR configuration.
2. Part of the physical STMR will be reserved for the SOS, and the
others will be passed through to the UOS, so that the UOS can write
the traces to the MMIO space directly.
A parameter is needed to indicate the offset and size of the Masters
to pass through to the UOS. For example, "-s 0:2,npk,512/256", there
are 256 Masters from #768 (256+512, #256 is the starting Master for
software tracing) passed through to the UOS.
CSR STMR
SOS: +--------------+ +----------------------------------+
| physical CSR | | Reserved for SOS | |
+--------------+ +----------------------------------+
UOS: +--------------+ +---------------+
| sw CSR by dm | | mapped to UOS |
+--------------+ +---------------+
Here is an overall flow about how it works.
1. System boots up, and the npk driver on SOS is loaded.
2. The dm is launched with parameters to enable npk virtualization.
3. The dm/npk sets up a bar for CSR, and some values are initialized
based on the parameters, for example, the total number of Masters for
the UOS.
4. The dm/npk sets up a bar for STMR, and maps part of the physical
STMR to it with an offset, according to the parameters.
5. The UOS boots up, and the native npk driver on the UOS is loaded.
6. Enable the traces from UOS, and the traces are written directly to
STMR, but not output by npk for now.
7. Enable the npk output on SOS, and now the traces are output by npk
to the selected target.
8. If the memory is the selected target, the traces can be retrieved
from memory on SOS, after stopping the traces.
Signed-off-by: Zhi Jin <zhi.jin@intel.com>
Reviewed-by: Zhang Di <di.zhang@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2018-05-29 11:20:45 +08:00
|
|
|
SRCS += hw/pci/npk.c
|
2018-03-07 21:01:19 +08:00
|
|
|
|
|
|
|
# core
|
|
|
|
#SRCS += core/bootrom.c
|
monitor: an interface of acrn-dm
A monitor component will be added to acrn-dm, which crteats socket,
bind and listening at /run/acrn/vmname. Acrnctl & acrnd could conn
-ect to the socket for communication, using defined message, in
include/monitor_msg.h
For each defined message, a message handler callback could be
registered via monitor_add_msg_handler(). On received of a defined
message, a certain call back will be called. Each callback can only
see the message sender's socket-fd.
When acrn-dm want report something, not triggered by incoming message
it can send broadcast message, use monitor_broadcast().
Acked-by: Eddie Dong <eddie.dong@intel.com>
Reviewed-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
Reviewed-by: Zhao Yakui <yakui.zhao@intel.com>
Reviewed-by: Yin, Fengwei <fengwei.yin@intel.com>
Signed-off-by: Tao, Yuhong <yuhong.tao@intel.com>
2018-04-03 02:57:47 +08:00
|
|
|
SRCS += core/monitor.c
|
2018-03-21 14:57:44 +08:00
|
|
|
SRCS += core/sw_load_common.c
|
|
|
|
SRCS += core/sw_load_bzimage.c
|
2018-03-21 15:13:02 +08:00
|
|
|
SRCS += core/sw_load_vsbl.c
|
2018-12-12 17:46:16 +08:00
|
|
|
SRCS += core/sw_load_ovmf.c
|
2018-10-10 23:10:23 +08:00
|
|
|
SRCS += core/sw_load_elf.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += core/smbiostbl.c
|
|
|
|
SRCS += core/mevent.c
|
|
|
|
SRCS += core/gc.c
|
2018-07-06 13:24:45 +08:00
|
|
|
SRCS += core/pm.c
|
2018-03-07 21:01:19 +08:00
|
|
|
SRCS += core/console.c
|
|
|
|
SRCS += core/inout.c
|
|
|
|
SRCS += core/mem.c
|
|
|
|
SRCS += core/post.c
|
|
|
|
SRCS += core/vmmapi.c
|
|
|
|
SRCS += core/mptbl.c
|
|
|
|
SRCS += core/main.c
|
2018-03-14 22:03:52 +08:00
|
|
|
SRCS += core/hugetlb.c
|
2018-05-15 14:28:38 +08:00
|
|
|
SRCS += core/vrpmb.c
|
2018-10-12 15:42:57 +08:00
|
|
|
SRCS += core/timer.c
|
2018-03-07 21:01:19 +08:00
|
|
|
|
2018-05-09 11:30:55 +08:00
|
|
|
# arch
|
|
|
|
SRCS += arch/x86/pm.c
|
|
|
|
|
2018-08-23 21:54:05 +08:00
|
|
|
# vmcfg
|
|
|
|
SRCS += vmcfg/vmcfg.c
|
2018-08-23 23:03:59 +08:00
|
|
|
SRCS += vmcfg/apl-mrb/vm1/vm1.c
|
2018-05-09 11:30:55 +08:00
|
|
|
|
2018-03-07 21:01:19 +08:00
|
|
|
OBJS := $(patsubst %.c,$(DM_OBJDIR)/%.o,$(SRCS))
|
|
|
|
|
2018-10-23 16:51:06 +08:00
|
|
|
VERSION_H := $(DM_OBJDIR)/include/version.h
|
|
|
|
VMCFG_CONFIG_H := $(DM_OBJDIR)/include/vmcfg_config.h
|
|
|
|
|
2018-03-07 21:01:19 +08:00
|
|
|
HEADERS := $(shell find $(BASEDIR) -name '*.h')
|
2018-10-23 16:51:06 +08:00
|
|
|
HEADERS += $(VERSION_H) $(VMCFG_CONFIG_H)
|
|
|
|
|
2018-03-07 21:01:19 +08:00
|
|
|
DISTCLEAN_OBJS := $(shell find $(BASEDIR) -name '*.o')
|
|
|
|
|
|
|
|
PROGRAM := acrn-dm
|
|
|
|
|
2018-05-24 16:16:57 +08:00
|
|
|
SAMPLES_NUC := $(wildcard samples/nuc/*)
|
|
|
|
SAMPLES_MRB := $(wildcard samples/apl-mrb/*)
|
2019-03-13 17:59:36 +08:00
|
|
|
SAMPLES_UP2 := $(wildcard samples/apl-up2/*)
|
2018-03-08 12:21:59 +08:00
|
|
|
|
2018-06-05 17:30:41 +08:00
|
|
|
BIOS_BIN := $(wildcard bios/*)
|
|
|
|
|
2018-10-23 16:51:06 +08:00
|
|
|
all: $(DM_OBJDIR)/$(PROGRAM)
|
2018-03-07 21:01:19 +08:00
|
|
|
@echo -n ""
|
|
|
|
|
2018-10-23 16:51:06 +08:00
|
|
|
$(VMCFG_CONFIG_H):
|
2019-01-17 05:35:20 +08:00
|
|
|
$(MAKE) -C $(BASEDIR)/vmcfg $@ BASEDIR=$(BASEDIR) DM_OBJDIR=$(DM_OBJDIR)
|
2018-08-14 23:04:15 +08:00
|
|
|
|
2018-10-23 16:51:06 +08:00
|
|
|
$(DM_OBJDIR)/$(PROGRAM): $(OBJS)
|
|
|
|
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $^ $(LIBS)
|
2018-03-07 21:01:19 +08:00
|
|
|
|
|
|
|
clean:
|
|
|
|
rm -rf $(DM_OBJDIR)
|
|
|
|
|
|
|
|
distclean:
|
|
|
|
rm -f $(DISTCLEAN_OBJS)
|
|
|
|
rm -rf $(DM_OBJDIR)
|
|
|
|
rm -f tags TAGS cscope.files cscope.in.out cscope.out cscope.po.out GTAGS GPATH GRTAGS GSYMS
|
|
|
|
|
2018-10-23 16:51:06 +08:00
|
|
|
$(VERSION_H):
|
|
|
|
mkdir -p $(DM_OBJDIR)/include
|
|
|
|
touch $(VERSION_H)
|
2018-08-06 10:09:27 +08:00
|
|
|
if [ "$(DM_BUILD_VERSION)"x = x -o "$(DM_BUILD_TAG)"x = x ];then\
|
|
|
|
COMMIT=`git rev-parse --verify --short HEAD 2>/dev/null`;\
|
|
|
|
DIRTY=`git diff-index --name-only HEAD`;\
|
|
|
|
if [ -n "$$DIRTY" ];then PATCH="$$COMMIT-dirty";else PATCH="$$COMMIT";fi;\
|
|
|
|
DAILY_TAG=`git tag --merged HEAD|grep "acrn"|tail -n 1`;\
|
|
|
|
else\
|
|
|
|
PATCH=$(DM_BUILD_VERSION);\
|
|
|
|
DAILY_TAG=$(DM_BUILD_TAG);\
|
|
|
|
fi;\
|
2018-03-07 21:01:19 +08:00
|
|
|
TIME=`date "+%Y-%m-%d %H:%M:%S"`;\
|
2018-06-28 10:36:10 +08:00
|
|
|
USER=`id -u -n`; \
|
2018-10-23 16:51:06 +08:00
|
|
|
echo "/*" > $(VERSION_H); \
|
|
|
|
sed 's/^/ * /' ../LICENSE >> $(VERSION_H);\
|
|
|
|
echo " */" >> $(VERSION_H);\
|
|
|
|
echo "" >> $(VERSION_H);\
|
|
|
|
echo "#define DM_MAJOR_VERSION $(MAJOR_VERSION)" >> $(VERSION_H);\
|
|
|
|
echo "#define DM_MINOR_VERSION $(MINOR_VERSION)" >> $(VERSION_H);\
|
|
|
|
echo "#define DM_EXTRA_VERSION "\"$(EXTRA_VERSION)\""" >> $(VERSION_H);\
|
|
|
|
echo "#define DM_FULL_VERSION "\"$(FULL_VERSION)\""" >> $(VERSION_H);\
|
|
|
|
echo "#define DM_DAILY_TAG "\""$$DAILY_TAG"\""" >> $(VERSION_H);\
|
|
|
|
echo "#define DM_BUILD_VERSION "\""$$PATCH"\""" >> $(VERSION_H);\
|
|
|
|
echo "#define DM_BUILD_TIME "\""$$TIME"\""" >> $(VERSION_H);\
|
|
|
|
echo "#define DM_BUILD_USER "\""$$USER"\""" >> $(VERSION_H)
|
2018-03-07 21:01:19 +08:00
|
|
|
|
|
|
|
$(DM_OBJDIR)/%.o: %.c $(HEADERS)
|
|
|
|
[ ! -e $@ ] && mkdir -p $(dir $@); \
|
|
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
|
2019-01-16 10:17:01 +08:00
|
|
|
install: $(DM_OBJDIR)/$(PROGRAM) install-samples-nuc install-samples-mrb install-bios install-vmcfg install-samples-up2
|
2018-05-24 16:16:57 +08:00
|
|
|
install -D --mode=0755 $(DM_OBJDIR)/$(PROGRAM) $(DESTDIR)/usr/bin/$(PROGRAM)
|
2018-03-08 12:21:59 +08:00
|
|
|
|
2018-12-24 16:57:28 +08:00
|
|
|
install-samples-up2: $(SAMPLES_UP2)
|
2019-03-13 17:59:36 +08:00
|
|
|
install -D -t $(DESTDIR)/usr/share/acrn/samples/apl-up2 $^
|
2018-12-24 16:57:28 +08:00
|
|
|
|
2018-05-24 16:16:57 +08:00
|
|
|
install-samples-nuc: $(SAMPLES_NUC)
|
|
|
|
install -D -t $(DESTDIR)/usr/share/acrn/samples/nuc $^
|
|
|
|
|
|
|
|
install-samples-mrb: $(SAMPLES_MRB)
|
|
|
|
install -D -t $(DESTDIR)/usr/share/acrn/samples/apl-mrb $^
|
2018-07-30 17:42:51 +08:00
|
|
|
install -d $(DESTDIR)/usr/lib/systemd/system/
|
2018-07-26 11:19:17 +08:00
|
|
|
install -p -D -m 0644 ./samples/apl-mrb/acrn_guest.service $(DESTDIR)/usr/lib/systemd/system
|
2018-06-05 17:30:41 +08:00
|
|
|
|
|
|
|
install-bios: $(BIOS_BIN)
|
|
|
|
install -d $(DESTDIR)/usr/share/acrn/bios
|
|
|
|
install -D --mode=0664 -t $(DESTDIR)/usr/share/acrn/bios $^
|
2018-08-28 21:07:23 +08:00
|
|
|
|
|
|
|
install-vmcfg:
|
2019-01-17 05:35:20 +08:00
|
|
|
$(MAKE) -C $(BASEDIR)/vmcfg install DESTDIR=$(DESTDIR) BASEDIR=$(BASEDIR)
|