mirror of
https://github.com/novatiq/packages.git
synced 2026-04-30 15:38:40 +01:00
qemu: packaging target {x86_64,arm}-softmmu and friends
At the moment, only build these softmmu emulators for x86_64 and sunxi target. The decision was made for the following reasons - It seems that interests of virtualization with qemu are mostly from x86, and ARM recently. - x86, sunxi boards/boxes capable of running qemu with accel=kvm are more widely available - Not all host, target combinations of qemu works, or even compiles - Extra maintenance work and server resources Test results are as the following - Nested vmx works: lede-qemu-x86_64-kvm on lede-qemu-x86_64-kvm - KVM on Cubieboard2 works - tcg with malta works: lede-qemu-malta-tcg on lede-qemu-malta-tcg. But it's too slow to be useful thus not included in this version - mips64 host does not compile Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
--- a/configure.orig 2016-11-22 11:53:25.739180380 +0800
|
||||
+++ b/configure 2016-11-22 11:53:55.183189596 +0800
|
||||
@@ -1147,6 +1147,8 @@ for opt do
|
||||
;;
|
||||
--enable-jemalloc) jemalloc="yes"
|
||||
;;
|
||||
+ --disable-fortify-source) fortify_source="no"
|
||||
+ ;;
|
||||
*)
|
||||
echo "ERROR: unknown option $opt"
|
||||
echo "Try '$0 --help' for more information"
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/rules.mak.orig 2016-11-22 13:30:40.933006727 +0800
|
||||
+++ b/rules.mak 2016-11-22 13:30:47.229008698 +0800
|
||||
@@ -70,7 +70,7 @@ LINK = $(call quiet-command, $(LINKPROG)
|
||||
$(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -o $@ $<," CPP $(TARGET_DIR)$@")
|
||||
|
||||
%.o: %.asm
|
||||
- $(call quiet-command,$(AS) $(ASFLAGS) -o $@ $<," AS $(TARGET_DIR)$@")
|
||||
+ $(call quiet-command,$(AS) $(ASFLAGS) -o $@ -x assembler $<," AS $(TARGET_DIR)$@")
|
||||
|
||||
%.o: %.cc
|
||||
$(call quiet-command,$(CXX) $(QEMU_INCLUDES) $(QEMU_CXXFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) $($@-cflags) -c -o $@ $<," CXX $(TARGET_DIR)$@")
|
||||
@@ -0,0 +1,14 @@
|
||||
--- a/configure.orig 2016-11-22 17:35:12.069598617 +0800
|
||||
+++ b/configure 2016-11-22 18:24:01.042515353 +0800
|
||||
@@ -1789,7 +1789,10 @@ static void foo(void) __attribute__((ifu
|
||||
int main(void) { foo(); return 0; }
|
||||
EOF
|
||||
if compile_prog "-mavx2" "" ; then
|
||||
- if readelf --syms $TMPE |grep "IFUNC.*foo" >/dev/null 2>&1; then
|
||||
+ if readelf --program-headers $TMPE | grep -iq 'Requesting program interpreter: .*ld-musl'; then
|
||||
+ # ifunc support is not available with dynamic linker of musl
|
||||
+ avx2_opt="no"
|
||||
+ elif readelf --syms $TMPE |grep "IFUNC.*foo" >/dev/null 2>&1; then
|
||||
avx2_opt="yes"
|
||||
fi
|
||||
fi
|
||||
@@ -0,0 +1,10 @@
|
||||
--- a/pixman/configure.ac.orig 2016-11-22 20:44:21.205150763 +0800
|
||||
+++ b/pixman/configure.ac 2016-11-22 20:44:55.505161500 +0800
|
||||
@@ -720,7 +720,6 @@ dnl Check if assembler is gas compatible
|
||||
have_mips_dspr2=no
|
||||
AC_MSG_CHECKING(whether to use MIPS DSPr2 assembler)
|
||||
xserver_save_CFLAGS=$CFLAGS
|
||||
-CFLAGS="-mdspr2 $CFLAGS"
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||
#if !(defined(__mips__) && __mips_isa_rev >= 2)
|
||||
@@ -0,0 +1,17 @@
|
||||
--- a/pixman/pixman/pixman-private.h.orig 2016-11-22 22:10:33.574769654 +0800
|
||||
+++ b/pixman/pixman/pixman-private.h 2016-11-22 22:10:47.638774056 +0800
|
||||
@@ -1,5 +1,3 @@
|
||||
-#include <float.h>
|
||||
-
|
||||
#ifndef PIXMAN_PRIVATE_H
|
||||
#define PIXMAN_PRIVATE_H
|
||||
|
||||
@@ -17,6 +15,8 @@
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
+#include <float.h>
|
||||
+
|
||||
#ifndef PACKAGE
|
||||
# error config.h must be included before pixman-private.h
|
||||
#endif
|
||||
@@ -0,0 +1,55 @@
|
||||
--- a/disas/libvixl/vixl/utils.h.orig 2016-11-22 22:36:20.691253883 +0800
|
||||
+++ b/disas/libvixl/vixl/utils.h 2016-11-22 22:55:44.639618185 +0800
|
||||
@@ -118,11 +118,17 @@ double double_pack(uint64_t sign, uint64
|
||||
// An fpclassify() function for 16-bit half-precision floats.
|
||||
int float16classify(float16 value);
|
||||
|
||||
+#ifdef isnan
|
||||
+#define isnan_ isnan
|
||||
+#else
|
||||
+#define isnan_ std::isnan
|
||||
+#endif
|
||||
+
|
||||
// NaN tests.
|
||||
inline bool IsSignallingNaN(double num) {
|
||||
const uint64_t kFP64QuietNaNMask = UINT64_C(0x0008000000000000);
|
||||
uint64_t raw = double_to_rawbits(num);
|
||||
- if (std::isnan(num) && ((raw & kFP64QuietNaNMask) == 0)) {
|
||||
+ if (isnan_(num) && ((raw & kFP64QuietNaNMask) == 0)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -132,7 +138,7 @@ inline bool IsSignallingNaN(double num)
|
||||
inline bool IsSignallingNaN(float num) {
|
||||
const uint32_t kFP32QuietNaNMask = 0x00400000;
|
||||
uint32_t raw = float_to_rawbits(num);
|
||||
- if (std::isnan(num) && ((raw & kFP32QuietNaNMask) == 0)) {
|
||||
+ if (isnan_(num) && ((raw & kFP32QuietNaNMask) == 0)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -148,21 +154,21 @@ inline bool IsSignallingNaN(float16 num)
|
||||
|
||||
template <typename T>
|
||||
inline bool IsQuietNaN(T num) {
|
||||
- return std::isnan(num) && !IsSignallingNaN(num);
|
||||
+ return isnan_(num) && !IsSignallingNaN(num);
|
||||
}
|
||||
|
||||
|
||||
// Convert the NaN in 'num' to a quiet NaN.
|
||||
inline double ToQuietNaN(double num) {
|
||||
const uint64_t kFP64QuietNaNMask = UINT64_C(0x0008000000000000);
|
||||
- VIXL_ASSERT(std::isnan(num));
|
||||
+ VIXL_ASSERT(isnan_(num));
|
||||
return rawbits_to_double(double_to_rawbits(num) | kFP64QuietNaNMask);
|
||||
}
|
||||
|
||||
|
||||
inline float ToQuietNaN(float num) {
|
||||
const uint32_t kFP32QuietNaNMask = 0x00400000;
|
||||
- VIXL_ASSERT(std::isnan(num));
|
||||
+ VIXL_ASSERT(isnan_(num));
|
||||
return rawbits_to_float(float_to_rawbits(num) | kFP32QuietNaNMask);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user