1*4882a593SmuzhiyunFrom fa09fa3ad6a21ae0b35fb860f76d1762e5f29972 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Adam Duskett <aduskett@gmail.com> 3*4882a593SmuzhiyunDate: Mon, 27 Sep 2021 12:55:09 -0700 4*4882a593SmuzhiyunSubject: [PATCH] add qemu-wrapper support 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunV8's JIT infrastructure requires binaries such as mksnapshot and mkpeephole to 7*4882a593Smuzhiyunbe run in the host during the build. However, these binaries must have the 8*4882a593Smuzhiyunsame bit-width as the target (e.g. a x86_64 host targeting ARMv6 needs to 9*4882a593Smuzhiyunproduce a 32-bit binary). To work around this issue, cross-compile the 10*4882a593Smuzhiyunbinaries for the target and run them on the host with QEMU, much like 11*4882a593Smuzhiyungobject-introspection. 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunHowever, for the host-variant we do not want to use a 14*4882a593Smuzhiyunqemu-wrapper, so add @MAYBE_WRAPPER@ to the needed files and sed the path to 15*4882a593Smuzhiyunthe qemu-wrapper on target builds, and remove @MAYBE_WRAPPER@ entirely on 16*4882a593Smuzhiyunhost-builds. 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunSigned-off-by: Adam Duskett <aduskett@gmail.com> 19*4882a593Smuzhiyun--- 20*4882a593Smuzhiyun node.gyp | 4 ++-- 21*4882a593Smuzhiyun tools/v8_gypfiles/v8.gyp | 8 ++++---- 22*4882a593Smuzhiyun 2 files changed, 6 insertions(+), 6 deletions(-) 23*4882a593Smuzhiyun 24*4882a593Smuzhiyundiff --git a/node.gyp b/node.gyp 25*4882a593Smuzhiyunindex 8ba0dfeb..c77f6f7d 100644 26*4882a593Smuzhiyun--- a/node.gyp 27*4882a593Smuzhiyun+++ b/node.gyp 28*4882a593Smuzhiyun@@ -491,7 +491,7 @@ 29*4882a593Smuzhiyun 'action_name': 'run_mkcodecache', 30*4882a593Smuzhiyun 'process_outputs_as_sources': 1, 31*4882a593Smuzhiyun 'inputs': [ 32*4882a593Smuzhiyun- '<(mkcodecache_exec)', 33*4882a593Smuzhiyun+ @MAYBE_WRAPPER@ '<(mkcodecache_exec)', 34*4882a593Smuzhiyun ], 35*4882a593Smuzhiyun 'outputs': [ 36*4882a593Smuzhiyun '<(SHARED_INTERMEDIATE_DIR)/node_code_cache.cc', 37*4882a593Smuzhiyun@@ -516,7 +516,7 @@ 38*4882a593Smuzhiyun 'action_name': 'node_mksnapshot', 39*4882a593Smuzhiyun 'process_outputs_as_sources': 1, 40*4882a593Smuzhiyun 'inputs': [ 41*4882a593Smuzhiyun- '<(node_mksnapshot_exec)', 42*4882a593Smuzhiyun+ @MAYBE_WRAPPER@ '<(node_mksnapshot_exec)', 43*4882a593Smuzhiyun ], 44*4882a593Smuzhiyun 'outputs': [ 45*4882a593Smuzhiyun '<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc', 46*4882a593Smuzhiyundiff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp 47*4882a593Smuzhiyunindex 48ec392b..f9bb0fbe 100644 48*4882a593Smuzhiyun--- a/tools/v8_gypfiles/v8.gyp 49*4882a593Smuzhiyun+++ b/tools/v8_gypfiles/v8.gyp 50*4882a593Smuzhiyun@@ -220,7 +220,7 @@ 51*4882a593Smuzhiyun { 52*4882a593Smuzhiyun 'action_name': 'run_torque_action', 53*4882a593Smuzhiyun 'inputs': [ # Order matters. 54*4882a593Smuzhiyun- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', 55*4882a593Smuzhiyun+ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)', 56*4882a593Smuzhiyun '<@(torque_files)', 57*4882a593Smuzhiyun ], 58*4882a593Smuzhiyun 'outputs': [ 59*4882a593Smuzhiyun@@ -351,7 +351,7 @@ 60*4882a593Smuzhiyun { 61*4882a593Smuzhiyun 'action_name': 'generate_bytecode_builtins_list_action', 62*4882a593Smuzhiyun 'inputs': [ 63*4882a593Smuzhiyun- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)', 64*4882a593Smuzhiyun+ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)', 65*4882a593Smuzhiyun ], 66*4882a593Smuzhiyun 'outputs': [ 67*4882a593Smuzhiyun '<(generate_bytecode_builtins_list_output)', 68*4882a593Smuzhiyun@@ -533,7 +533,7 @@ 69*4882a593Smuzhiyun ], 70*4882a593Smuzhiyun }, 71*4882a593Smuzhiyun 'inputs': [ 72*4882a593Smuzhiyun- '<(mksnapshot_exec)', 73*4882a593Smuzhiyun+ @MAYBE_WRAPPER@ '<(mksnapshot_exec)', 74*4882a593Smuzhiyun ], 75*4882a593Smuzhiyun 'outputs': [ 76*4882a593Smuzhiyun '<(INTERMEDIATE_DIR)/snapshot.cc', 77*4882a593Smuzhiyun@@ -1448,7 +1448,7 @@ 78*4882a593Smuzhiyun { 79*4882a593Smuzhiyun 'action_name': 'run_gen-regexp-special-case_action', 80*4882a593Smuzhiyun 'inputs': [ 81*4882a593Smuzhiyun- '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)', 82*4882a593Smuzhiyun+ @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)', 83*4882a593Smuzhiyun ], 84*4882a593Smuzhiyun 'outputs': [ 85*4882a593Smuzhiyun '<(SHARED_INTERMEDIATE_DIR)/src/regexp/special-case.cc', 86*4882a593Smuzhiyun-- 87*4882a593Smuzhiyun2.31.1 88*4882a593Smuzhiyun 89