From: sgjesse@chromium.org Date: Thu, 9 Jun 2011 15:51:08 +0000 (+0000) Subject: GYP: Generate makefiles for all architectures on Linux X-Git-Tag: upstream/4.7.83~19184 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b80fcd104834d17c75fc8761a067e6c1625ec29d;p=platform%2Fupstream%2Fv8.git 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. R=jkummerow@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7104083 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/build/README.txt b/build/README.txt index 65c5754..c74b520 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. diff --git a/build/gyp_v8 b/build/gyp_v8 index 0c2221e..61b54c2 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:] @@ -141,5 +154,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)