Reviewers: jkummerow,

Description:
GYP: Generate makefiles for all architectures on Linux

On Linux running gyp_v8 will generate makefiles for all architectures. On other
platforms generate for ia32 only as that is what is currently supported.

The output (out) directory is still shared.

[email protected]

BUG=none
TEST=none


Please review this at http://codereview.chromium.org/7104083/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files:
  M build/README.txt
  M build/gyp_v8


Index: build/README.txt
diff --git a/build/README.txt b/build/README.txt
index 65c5754a2b175448a719ccc5cfbe4d8ee3ffdb2b..c74b52051a8170d396e665d47cdbe821b51e3afd 100644
--- a/build/README.txt
+++ b/build/README.txt
@@ -13,39 +13,32 @@ Note for the command lines below that Debug is the default configuration,
 so specifying that on the command lines is not required.


-To generate Makefiles and build 32-bit version on Linux:
---------------------------------------------------------
+To generate Makefiles on Linux:
+-------------------------------

-$ build/gyp_v8 -D target_arch=ia32
-$ make BUILDTYPE=Debug
-$ out/Debug/shell
-$ make BUILDTYPE=Release
-$ out/Release/shell
+$ build/gyp_v8

-To generate Makefiles and build 64-bit version on Linux:
---------------------------------------------------------
-
-$ build/gyp_v8 -D target_arch=x64
-$ make BUILDTYPE=Debug
-$ out/Debug/shell
-$ make BUILDTYPE=Release
-$ out/Release/shell
+This will build makefiles for ia32, x64 and the ARM simulator with names
+Makefile-ia32, Makefile-x64 and Makefile-armu respectively.

-To generate Makefiles and build for the arm simulator on Linux:
----------------------------------------------------------------
+To build and run for ia32 in debug and release version do:

-$ build/gyp_v8 -I build/armu.gypi
-$ make BUILDTYPE=Debug
+$ make -f Makefile-ia32
 $ out/Debug/shell
-$ make BUILDTYPE=Release
+$ make -f Makefile-ia32 BUILDTYPE=Release
 $ out/Release/shell

+Change the makefile to build and run for the other architectures.
+

 To generate Xcode project files on Mac OS:
 ------------------------------------------

-$ build/gyp_v8 -D target_arch=ia32
-$ xcodebuild -project build/all.xcodeproj -configuration Debug
+$ build/gyp_v8
+
+This will make an Xcode project for the ia32 architecture. To build and run do:
+
+$ xcodebuild -project build/all.xcodeproj
 $ samples/build/Debug/shell
 $ xcodebuild -project build/all.xcodeproj -configuration Release
 $ samples/build/Release/shell
@@ -66,8 +59,8 @@ repository. From the root of the V8 project do the following:

> svn co http://src.chromium.org/svn/trunk/tools/third_party/python_26@70627 third_party/python_26

-Now generate Visual Studio solution and project files:
+Now generate Visual Studio solution and project files for the ia32 architecture:

-> third_party\python_26\python build/gyp_v8 -D target_arch=ia32
+> third_party\python_26\python build/gyp_v8

 Now open build\All.sln in Visual Studio.
Index: build/gyp_v8
diff --git a/build/gyp_v8 b/build/gyp_v8
index 0c2221e262395bc109a9d04c5d9ba1582f9f49e6..a5246f377065d1f01b9dc30a071f406a3ffb4d05 100755
--- a/build/gyp_v8
+++ b/build/gyp_v8
@@ -38,9 +38,13 @@ import sys
 script_dir = os.path.dirname(__file__)
 v8_root = os.path.normpath(os.path.join(script_dir, os.pardir))

+sys.path.insert(0, os.path.join(v8_root, 'tools'))
+import utils
+
 sys.path.insert(0, os.path.join(v8_root, 'build', 'gyp', 'pylib'))
 import gyp

+
 def apply_gyp_environment(file_path=None):
   """
   Reads in a *.gyp_env file and applies the valid keys to os.environ.
@@ -68,6 +72,7 @@ def apply_gyp_environment(file_path=None):
       else:
         os.environ[var] = val

+
 def additional_include_files(args=[]):
   """
   Returns a list of additional (.gypi) files to include, without
@@ -97,6 +102,14 @@ def additional_include_files(args=[]):

   return result

+
+def run_gyp(args):
+  rc = gyp.main(args)
+  if rc != 0:
+    print 'Error running GYP'
+    sys.exit(rc)
+
+
 if __name__ == '__main__':
   args = sys.argv[1:]

@@ -131,6 +144,7 @@ if __name__ == '__main__':

   # Set the GYP DEPTH variable to the root of the V8 project.
   args.append('--depth=' + v8_root)
+  #args.append('--depth=/usr/local/google/home/sgjesse/v8/xxx')

   # If V8_GYP_SYNTAX_CHECK is set to 1, it will invoke gyp with --check
   # to enfore syntax checking.
@@ -141,5 +155,20 @@ if __name__ == '__main__':
   print 'Updating projects from gyp files...'
   sys.stdout.flush()

-  # Off we go...
-  sys.exit(gyp.main(args))
+  # Generate for the architectures supported on the given platform.
+  gyp_args = list(args)
+  gyp_args.append('-Dtarget_arch=ia32')
+  if utils.GuessOS() == 'linux':
+    gyp_args.append('-S-ia32')
+  run_gyp(gyp_args)
+
+  if utils.GuessOS() == 'linux':
+    gyp_args = list(args)
+    gyp_args.append('-Dtarget_arch=x64')
+    gyp_args.append('-S-x64')
+    run_gyp(gyp_args)
+
+    gyp_args = list(args)
+    gyp_args.append('-I' + v8_root + '/build/armu.gypi')
+    gyp_args.append('-S-armu')
+    run_gyp(gyp_args)


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to