Add a V8 specific target architecture to the GYP file
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 26 Apr 2010 10:59:14 +0000 (10:59 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 26 Apr 2010 10:59:14 +0000 (10:59 +0000)
The V8 GYP file now uses its own target architecture. It default to the standard target_arch, but can be set to a separate value. E.g. using

  export GYP_DEFINES="target_arch=ia32 v8_target_arch=arm"

makes it possible to have the V8 ARM simulator be used in a IA32 build.

Added some checking of supported host/target architecture combinations.
Review URL: http://codereview.chromium.org/1790001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4490 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/globals.h
tools/gyp/v8.gyp

index e3ef958..bef5e8e 100644 (file)
@@ -50,15 +50,32 @@ namespace internal {
 #define V8_HOST_ARCH_MIPS 1
 #define V8_HOST_ARCH_32_BIT 1
 #else
-#error Your host architecture was not detected as supported by v8
+#error Host architecture was not detected as supported by v8
 #endif
 
+// Check for supported combinations of host and target architectures.
+#if defined(V8_TARGET_ARCH_IA32) && !defined(V8_HOST_ARCH_IA32)
+#error Target architecture ia32 is only supported on ia32 host
+#endif
+#if defined(V8_TARGET_ARCH_X64) && !defined(V8_HOST_ARCH_X64)
+#error Target architecture x64 is only supported on x64 host
+#endif
+#if (defined(V8_TARGET_ARCH_ARM) && \
+    !(defined(V8_HOST_ARCH_IA32) || defined(V8_HOST_ARCH_ARM)))
+#error Target architecture arm is only supported on arm and ia32 host
+#endif
+#if (defined(V8_TARGET_ARCH_MIPS) && \
+    !(defined(V8_HOST_ARCH_IA32) || defined(V8_HOST_ARCH_MIPS)))
+#error Target architecture mips is only supported on mips and ia32 host
+#endif
+
+// Define unaligned read for the target architectures supporting it.
 #if defined(V8_TARGET_ARCH_X64) || defined(V8_TARGET_ARCH_IA32)
 #define V8_TARGET_CAN_READ_UNALIGNED 1
 #elif V8_TARGET_ARCH_ARM
 #elif V8_TARGET_ARCH_MIPS
 #else
-#error Your target architecture is not supported by v8
+#error Target architecture is not supported by v8
 #endif
 
 // Support for alternative bool type. This is only enabled if the code is
index 383564e..bfdc1cd 100644 (file)
@@ -29,7 +29,7 @@
   'variables': {
     'msvs_use_common_release': 0,
     'gcc_version%': 'unknown',
-    'target_arch%': 'ia32',
+    'v8_target_arch%': '<(target_arch)',
     'v8_use_snapshot%': 'true',
   },
   'target_defaults': {
       'ENABLE_VMSTATE_TRACKING',
     ],
     'conditions': [
-      ['target_arch=="arm"', {
+      ['v8_target_arch=="arm"', {
         'defines': [
           'V8_TARGET_ARCH_ARM',
         ],
       }],
-      ['target_arch=="ia32"', {
+      ['v8_target_arch=="ia32"', {
         'defines': [
           'V8_TARGET_ARCH_IA32',
         ],
       }],
-      ['target_arch=="x64"', {
+      ['v8_target_arch=="x64"', {
         'defines': [
           'V8_TARGET_ARCH_X64',
         ],
       'conditions': [
         # The ARM assembler assumes the host is 32 bits, so force building
         # 32-bit host tools.
-        ['target_arch=="arm" and host_arch=="x64" and _toolset=="host"', {
+        ['v8_target_arch=="arm" and host_arch=="x64" and _toolset=="host"', {
           'cflags': ['-m32'],
           'ldflags': ['-m32'],
         }]
         '../../src/cpu-profiler-inl.h',
         '../../src/cpu-profiler.cc',
         '../../src/cpu-profiler.h',
-       '../../src/data-flow.cc',
-       '../../src/data-flow.h',
+        '../../src/data-flow.cc',
+        '../../src/data-flow.h',
         '../../src/dateparser.cc',
         '../../src/dateparser.h',
         '../../src/dateparser-inl.h',
         '../../src/token.h',
         '../../src/top.cc',
         '../../src/top.h',
-       '../../src/type-info.cc',
-       '../../src/type-info.h',
+        '../../src/type-info.cc',
+        '../../src/type-info.h',
         '../../src/unicode-inl.h',
         '../../src/unicode.cc',
         '../../src/unicode.h',
         '../../src/zone.h',
       ],
       'conditions': [
-        ['target_arch=="arm"', {
+        ['v8_target_arch=="arm"', {
           'include_dirs+': [
             '../../src/arm',
           ],
             }]
           ]
         }],
-        ['target_arch=="ia32"', {
+        ['v8_target_arch=="ia32"', {
           'include_dirs+': [
             '../../src/ia32',
           ],
             '../../src/ia32/virtual-frame-ia32.h',
           ],
         }],
-        ['target_arch=="x64"', {
+        ['v8_target_arch=="x64"', {
           'include_dirs+': [
             '../../src/x64',
           ],
       'conditions': [
         # The ARM assembler assumes the host is 32 bits, so force building
         # 32-bit host tools.
-        ['target_arch=="arm" and host_arch=="x64" and _toolset=="host"', {
+        ['v8_target_arch=="arm" and host_arch=="x64" and _toolset=="host"', {
           'cflags': ['-m32'],
           'ldflags': ['-m32'],
         }]