Index: test/mac/gyptest-lto.py |
diff --git a/test/mac/gyptest-lto.py b/test/mac/gyptest-lto.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4430b5b9843a06509f66674e6e8dde56e3a3ce1d |
--- /dev/null |
+++ b/test/mac/gyptest-lto.py |
@@ -0,0 +1,67 @@ |
+#!/usr/bin/env python |
+ |
+# Copyright (c) 2015 Google Inc. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+""" |
+Verifies that LTO flags work. |
+""" |
+ |
+import TestGyp |
+ |
+import os |
+import re |
+import subprocess |
+import sys |
+ |
+if sys.platform == 'darwin': |
+ test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode']) |
+ #if test.format == 'xcode-ninja': |
scottmg
2015/04/01 23:50:21
delete?
|
+ # test.skip_test() |
+ CHDIR = 'lto' |
+ test.run_gyp('test.gyp', chdir=CHDIR) |
+ |
+ test.build('test.gyp', test.ALL, chdir=CHDIR) |
+ |
+ def ObjPath(srcpath, target): |
+ # TODO: Remove this into TestGyp if it's needed elsewhere. |
+ if test.format == 'xcode': |
+ return os.path.join(CHDIR, 'build', 'test.build', 'Default', |
+ target + '.build', 'Objects-normal', 'x86_64', |
+ srcpath + '.o') |
+ elif 'ninja' in test.format: # ninja, xcode-ninja |
+ return os.path.join(CHDIR, 'out', 'Default', 'obj', |
+ target + '.' + srcpath + '.o') |
+ elif test.format == 'make': |
+ return os.path.join(CHDIR, 'out', 'Default', 'obj.target', |
+ target, srcpath + '.o') |
+ |
+ def ObjType(p, t_expected): |
+ r = re.compile(r'nsyms\s+(\d+)') |
+ o = subprocess.check_output(['file', p]) |
+ objtype = 'unknown' |
+ if ': Mach-O ' in o: |
+ objtype = 'mach-o' |
+ elif ': LLVM bit-code ' in o: |
+ objtype = 'llvm' |
+ if objtype != t_expected: |
+ print 'Expected %s, got %s' % (t_expected, objtype) |
+ test.fail_test() |
+ |
+ ObjType(ObjPath('cfile', 'lto'), 'llvm') |
+ ObjType(ObjPath('ccfile', 'lto'), 'llvm') |
+ ObjType(ObjPath('mfile', 'lto'), 'llvm') |
+ ObjType(ObjPath('mmfile', 'lto'), 'llvm') |
+ ObjType(ObjPath('asmfile', 'lto'), 'mach-o') |
+ |
+ ObjType(ObjPath('cfile', 'lto_static'), 'llvm') |
+ ObjType(ObjPath('ccfile', 'lto_static'), 'llvm') |
+ ObjType(ObjPath('mfile', 'lto_static'), 'llvm') |
+ ObjType(ObjPath('mmfile', 'lto_static'), 'llvm') |
+ ObjType(ObjPath('asmfile', 'lto_static'), 'mach-o') |
+ |
+ test.pass_test() |
+ |
+ # TODO: Probably test for -object_path_lto too, else dsymutil won't be |
+ # useful maybe? |