qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH V8 2/4] tests/migration: Support cross compilation i


From: Wei Huang
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

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 <address@hidden>
---
 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]