From: Wei Huang <wei@redhat.com>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, lvivier@redhat.com, drjones@redhat.com,
dgilbert@redhat.com, quintela@redhat.com, wei@redhat.com
Subject: [Qemu-devel] [PATCH V8 2/4] tests/migration: Support cross compilation in generating boot header file
Date: Sat, 1 Sep 2018 01:11:13 -0400 [thread overview]
Message-ID: <1535778675-32170-3-git-send-email-wei@redhat.com> (raw)
In-Reply-To: <1535778675-32170-1-git-send-email-wei@redhat.com>
Recently a new configure option, CROSS_CC_GUEST, was added to
$(TARGET)-softmmu/config-target.mak to support TCG-related tests. This
patch tries to leverage this option to support cross compilation when the
migration boot block file is being re-generated:
* The x86_64 related files are moved to a new sub-dir (named ./x86_64).
* A new top-layer Makefile is created in tests/migration/ directory.
This Makefile searches and parses CROSS_CC_GUEST to generate CROSS_PREFIX.
The CROSS_PREFIX, if available, is then passed to migration/$ARCH/Makefile.
Signed-off-by: Wei Huang <wei@redhat.com>
---
tests/migration-test.c | 2 +-
tests/migration/Makefile | 43 +++++++++++++-----------
tests/migration/x86_64/Makefile | 22 ++++++++++++
tests/migration/{ => x86_64}/x86-a-b-bootblock.S | 0
tests/migration/{ => x86_64}/x86-a-b-bootblock.h | 8 ++---
5 files changed, 50 insertions(+), 25 deletions(-)
create mode 100644 tests/migration/x86_64/Makefile
rename tests/migration/{ => x86_64}/x86-a-b-bootblock.S (100%)
rename tests/migration/{ => x86_64}/x86-a-b-bootblock.h (93%)
diff --git a/tests/migration-test.c b/tests/migration-test.c
index 0e687b7..c4d79e9 100644
--- a/tests/migration-test.c
+++ b/tests/migration-test.c
@@ -83,7 +83,7 @@ static const char *tmpfs;
/* A simple PC boot sector that modifies memory (1-100MB) quickly
* outputting a 'B' every so often if it's still running.
*/
-#include "tests/migration/x86-a-b-bootblock.h"
+#include "tests/migration/x86_64/x86-a-b-bootblock.h"
static void init_bootfile_x86(const char *bootpath)
{
diff --git a/tests/migration/Makefile b/tests/migration/Makefile
index 5d5fa07..1de480e 100644
--- a/tests/migration/Makefile
+++ b/tests/migration/Makefile
@@ -1,31 +1,34 @@
-# To specify cross compiler prefix, use CROSS_PREFIX=
-# > make CROSS_PREFIX=x86_64-linux-gnu-
+#
+# Copyright (c) 2018 Red Hat, Inc. and/or its affiliates
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+# See the COPYING file in the top-level directory.
+#
+
+TARGET_LIST = x86_64
+
+SRC_PATH = ../..
override define __note
-/* This file is automatically generated from
- * tests/migration/x86-a-b-bootblock.s, edit that and then run
- * tests/migration/rebuild-x86-bootblock.sh to update,
- * and then remember to send both in your patch submission.
+/* This file is automatically generated from the assembly file in
+ * tests/migration/$@, edit that and then run "make all"
+ * inside tests/migration to update, and then remember to send both
+ * in your patch submission.
*/
endef
export __note
-.PHONY: all clean
-all: x86-a-b-bootblock.h
-
-x86-a-b-bootblock.h: x86.bootsect
- echo "$$__note" > header.tmp
- xxd -i $< | sed -e 's/.*int.*//' >> header.tmp
- mv header.tmp $@
+parse-cross-prefix = $(subst gcc,,$(patsubst cc,gcc,$(patsubst CROSS_CC_GUEST="%",%,$(shell grep "CROSS_CC_GUEST=" $(SRC_PATH)/$(1)-softmmu/config-target.mak))))
+gen-cross-prefix = $(patsubst %-,CROSS_PREFIX=%-,$(call parse-cross-prefix,$(1)))
-x86.bootsect: x86.boot
- dd if=$< of=$@ bs=256 count=2 skip=124
+.PHONY: all $(TARGET_LIST)
-x86.boot: x86.o
- $(CROSS_PREFIX)objcopy -O binary $< $@
+all: $(TARGET_LIST)
-x86.o: x86-a-b-bootblock.S
- $(CROSS_PREFIX)gcc -m32 -march=i486 -c $< -o $@
+$(TARGET_LIST):
+ $(MAKE) -C $@ $(call gen-cross-prefix,$@)
clean:
- @rm -rf *.boot *.o *.bootsect
+ for target in $(TARGET_LIST); do \
+ $(MAKE) -C $$target clean; \
+ done
diff --git a/tests/migration/x86_64/Makefile b/tests/migration/x86_64/Makefile
new file mode 100644
index 0000000..6dc849f
--- /dev/null
+++ b/tests/migration/x86_64/Makefile
@@ -0,0 +1,22 @@
+# To specify cross compiler prefix, use CROSS_PREFIX=
+# > make CROSS_PREFIX=x86_64-linux-gnu-
+
+.PHONY: all clean
+all: x86-a-b-bootblock.h
+
+x86-a-b-bootblock.h: x86.bootsect
+ echo "$$__note" > header.tmp
+ xxd -i $< | sed -e 's/.*int.*//' >> header.tmp
+ mv header.tmp $@
+
+x86.bootsect: x86.boot
+ dd if=$< of=$@ bs=256 count=2 skip=124
+
+x86.boot: x86.o
+ $(CROSS_PREFIX)objcopy -O binary $< $@
+
+x86.o: x86-a-b-bootblock.S
+ $(CROSS_PREFIX)gcc -m32 -march=i486 -c $< -o $@
+
+clean:
+ @rm -rf *.boot *.o *.bootsect
diff --git a/tests/migration/x86-a-b-bootblock.S b/tests/migration/x86_64/x86-a-b-bootblock.S
similarity index 100%
rename from tests/migration/x86-a-b-bootblock.S
rename to tests/migration/x86_64/x86-a-b-bootblock.S
diff --git a/tests/migration/x86-a-b-bootblock.h b/tests/migration/x86_64/x86-a-b-bootblock.h
similarity index 93%
rename from tests/migration/x86-a-b-bootblock.h
rename to tests/migration/x86_64/x86-a-b-bootblock.h
index 78a151f..73670ef 100644
--- a/tests/migration/x86-a-b-bootblock.h
+++ b/tests/migration/x86_64/x86-a-b-bootblock.h
@@ -1,7 +1,7 @@
-/* This file is automatically generated from
- * tests/migration/x86-a-b-bootblock.s, edit that and then run
- * tests/migration/rebuild-x86-bootblock.sh to update,
- * and then remember to send both in your patch submission.
+/* This file is automatically generated from the assembly file in
+ * tests/migration/x86_64, edit that and then run "make all"
+ * inside tests/migration to update, and then remember to send both
+ * in your patch submission.
*/
unsigned char x86_bootsect[] = {
0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00,
--
1.8.3.1
next prev parent reply other threads:[~2018-09-01 5:23 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-01 5:11 [Qemu-devel] [PATCH V8 0/4] tests: Add migration test for aarch64 Wei Huang
2018-09-01 5:11 ` [Qemu-devel] [PATCH V8 1/4] tests/migration: Convert x86 boot block compilation script into Makefile Wei Huang
2018-09-03 9:32 ` Juan Quintela
2018-09-03 11:08 ` Andrew Jones
2018-09-03 11:45 ` Juan Quintela
2018-09-03 12:14 ` Andrew Jones
2018-09-04 15:51 ` Wei Huang
2018-09-01 5:11 ` Wei Huang [this message]
2018-09-03 9:43 ` [Qemu-devel] [PATCH V8 2/4] tests/migration: Support cross compilation in generating boot header file Juan Quintela
2018-09-03 11:26 ` Andrew Jones
2018-09-04 17:04 ` Wei Huang
2018-09-04 18:05 ` Andrew Jones
2018-09-01 5:11 ` [Qemu-devel] [PATCH V8 3/4] tests/migration: Add migration-test " Wei Huang
2018-09-03 9:35 ` Juan Quintela
2018-09-03 11:34 ` Andrew Jones
2018-09-01 5:11 ` [Qemu-devel] [PATCH V8 4/4] tests: Add migration test for aarch64 Wei Huang
2018-09-01 10:07 ` Peter Maydell
2018-09-02 5:00 ` Wei Huang
2018-09-03 11:46 ` Andrew Jones
2018-09-03 9:42 ` Juan Quintela
2018-09-03 11:53 ` Andrew Jones
2018-09-04 17:07 ` Wei Huang
2018-09-04 18:02 ` Andrew Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1535778675-32170-3-git-send-email-wei@redhat.com \
--to=wei@redhat.com \
--cc=dgilbert@redhat.com \
--cc=drjones@redhat.com \
--cc=lvivier@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).