diff options
Diffstat (limited to 'third_party/python/gyp/test/linux')
17 files changed, 378 insertions, 0 deletions
diff --git a/third_party/python/gyp/test/linux/gyptest-implicit-rpath.py b/third_party/python/gyp/test/linux/gyptest-implicit-rpath.py new file mode 100644 index 0000000000..8e17a3f16d --- /dev/null +++ b/third_party/python/gyp/test/linux/gyptest-implicit-rpath.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +# Copyright (c) 2013 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 the implicit rpath is added only when needed. +""" + +import TestGyp + +import re +import subprocess +import sys + +if sys.platform.startswith('linux'): + test = TestGyp.TestGyp(formats=['ninja', 'make']) + + CHDIR = 'implicit-rpath' + test.run_gyp('test.gyp', chdir=CHDIR) + test.build('test.gyp', test.ALL, chdir=CHDIR) + + def GetRpaths(p): + p = test.built_file_path(p, chdir=CHDIR) + r = re.compile(r'Library rpath: \[([^\]]+)\]') + proc = subprocess.Popen(['readelf', '-d', p], stdout=subprocess.PIPE) + o = proc.communicate()[0].decode('utf-8') + assert not proc.returncode + return r.findall(o) + + if test.format == 'ninja': + expect = '$ORIGIN/lib/' + elif test.format == 'make': + expect = '$ORIGIN/lib.target/' + else: + test.fail_test() + + if GetRpaths('shared_executable') != [expect]: + test.fail_test() + + if GetRpaths('shared_executable_no_so_suffix') != [expect]: + test.fail_test() + + if GetRpaths('static_executable'): + test.fail_test() + + test.pass_test() diff --git a/third_party/python/gyp/test/linux/gyptest-ldflags-duplicates.py b/third_party/python/gyp/test/linux/gyptest-ldflags-duplicates.py new file mode 100644 index 0000000000..43a4607adf --- /dev/null +++ b/third_party/python/gyp/test/linux/gyptest-ldflags-duplicates.py @@ -0,0 +1,22 @@ +#!/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 duplicate ldflags are not removed. +""" + +import TestGyp + +import sys + +if sys.platform.startswith('linux'): + test = TestGyp.TestGyp() + + CHDIR = 'ldflags-duplicates' + test.run_gyp('test.gyp', chdir=CHDIR) + test.build('test.gyp', chdir=CHDIR) + + test.pass_test() diff --git a/third_party/python/gyp/test/linux/gyptest-ldflags-from-environment.py b/third_party/python/gyp/test/linux/gyptest-ldflags-from-environment.py new file mode 100644 index 0000000000..4aea193e4b --- /dev/null +++ b/third_party/python/gyp/test/linux/gyptest-ldflags-from-environment.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python + +# Copyright (c) 2017 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 the use of linker flags in environment variables. + +In this test, gyp and build both run in same local environment. +""" + +import TestGyp + +import re +import subprocess +import sys + +FORMATS = ('make', 'ninja') + +if sys.platform.startswith('linux'): + test = TestGyp.TestGyp(formats=FORMATS) + + CHDIR = 'ldflags-from-environment' + with TestGyp.LocalEnv({'LDFLAGS': '-Wl,--dynamic-linker=/target', + 'LDFLAGS_host': '-Wl,--dynamic-linker=/host', + 'GYP_CROSSCOMPILE': '1'}): + test.run_gyp('test.gyp', chdir=CHDIR) + test.build('test.gyp', chdir=CHDIR) + + def GetDynamicLinker(p): + p = test.built_file_path(p, chdir=CHDIR) + r = re.compile(r'\[Requesting program interpreter: ([^\]]+)\]') + proc = subprocess.Popen(['readelf', '-l', p], stdout=subprocess.PIPE) + o = proc.communicate()[0].decode('utf-8') + assert not proc.returncode + return r.search(o).group(1) + + if GetDynamicLinker('ldflags') != '/target': + test.fail_test() + + if GetDynamicLinker('ldflags_host') != '/host': + test.fail_test() + + test.pass_test() diff --git a/third_party/python/gyp/test/linux/gyptest-target-rpath.py b/third_party/python/gyp/test/linux/gyptest-target-rpath.py new file mode 100644 index 0000000000..f275caaece --- /dev/null +++ b/third_party/python/gyp/test/linux/gyptest-target-rpath.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python + +# Copyright (c) 2013 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. + +""" +Check target_rpath generator flag for ninja. +""" + +import TestGyp + +import re +import subprocess +import sys + +if sys.platform.startswith('linux'): + test = TestGyp.TestGyp(formats=['ninja']) + + CHDIR = 'target-rpath' + test.run_gyp('test.gyp', '-G', 'target_rpath=/usr/lib/gyptest/', chdir=CHDIR) + test.build('test.gyp', test.ALL, chdir=CHDIR) + + def GetRpaths(p): + p = test.built_file_path(p, chdir=CHDIR) + r = re.compile(r'Library rpath: \[([^\]]+)\]') + proc = subprocess.Popen(['readelf', '-d', p], stdout=subprocess.PIPE) + o = proc.communicate()[0].decode('utf-8') + assert not proc.returncode + return r.findall(o) + + expect = '/usr/lib/gyptest/' + + if GetRpaths('shared_executable') != [expect]: + test.fail_test() + + if GetRpaths('shared_executable_no_so_suffix') != [expect]: + test.fail_test() + + if GetRpaths('static_executable'): + test.fail_test() + + test.pass_test() diff --git a/third_party/python/gyp/test/linux/implicit-rpath/file.c b/third_party/python/gyp/test/linux/implicit-rpath/file.c new file mode 100644 index 0000000000..56757a701b --- /dev/null +++ b/third_party/python/gyp/test/linux/implicit-rpath/file.c @@ -0,0 +1 @@ +void f() {} diff --git a/third_party/python/gyp/test/linux/implicit-rpath/main.c b/third_party/python/gyp/test/linux/implicit-rpath/main.c new file mode 100644 index 0000000000..237c8ce181 --- /dev/null +++ b/third_party/python/gyp/test/linux/implicit-rpath/main.c @@ -0,0 +1 @@ +int main() {} diff --git a/third_party/python/gyp/test/linux/implicit-rpath/test.gyp b/third_party/python/gyp/test/linux/implicit-rpath/test.gyp new file mode 100644 index 0000000000..b546106986 --- /dev/null +++ b/third_party/python/gyp/test/linux/implicit-rpath/test.gyp @@ -0,0 +1,47 @@ +# Copyright (c) 2013 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. +{ + 'targets': [ + { + 'target_name': 'shared', + 'type': 'shared_library', + 'sources': [ 'file.c' ], + }, + { + 'target_name': 'shared_no_so_suffix', + 'product_extension': 'so.0.1', + 'type': 'shared_library', + 'sources': [ 'file.c' ], + }, + { + 'target_name': 'static', + 'type': 'static_library', + 'sources': [ 'file.c' ], + }, + { + 'target_name': 'shared_executable', + 'type': 'executable', + 'sources': [ 'main.c' ], + 'dependencies': [ + 'shared', + ] + }, + { + 'target_name': 'shared_executable_no_so_suffix', + 'type': 'executable', + 'sources': [ 'main.c' ], + 'dependencies': [ + 'shared_no_so_suffix', + ] + }, + { + 'target_name': 'static_executable', + 'type': 'executable', + 'sources': [ 'main.c' ], + 'dependencies': [ + 'static', + ] + }, + ], +} diff --git a/third_party/python/gyp/test/linux/ldflags-duplicates/check-ldflags.py b/third_party/python/gyp/test/linux/ldflags-duplicates/check-ldflags.py new file mode 100755 index 0000000000..ef1029529d --- /dev/null +++ b/third_party/python/gyp/test/linux/ldflags-duplicates/check-ldflags.py @@ -0,0 +1,28 @@ +#!/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 duplicate ldflags are not removed. +""" + +from __future__ import print_function + +import sys + +def CheckContainsFlags(args, substring): + if args.find(substring) is -1: + print('ERROR: Linker arguments "%s" are missing in "%s"' % (substring, + args)) + return False; + return True; + +if __name__ == '__main__': + args = " ".join(sys.argv) + print("args = " +args) + if not CheckContainsFlags(args, 'lib1.a -Wl,--no-whole-archive') \ + or not CheckContainsFlags(args, 'lib2.a -Wl,--no-whole-archive'): + sys.exit(1); + sys.exit(0) diff --git a/third_party/python/gyp/test/linux/ldflags-duplicates/lib1.c b/third_party/python/gyp/test/linux/ldflags-duplicates/lib1.c new file mode 100644 index 0000000000..a1322e7395 --- /dev/null +++ b/third_party/python/gyp/test/linux/ldflags-duplicates/lib1.c @@ -0,0 +1,6 @@ +// 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. + +void foo() { +} diff --git a/third_party/python/gyp/test/linux/ldflags-duplicates/lib2.c b/third_party/python/gyp/test/linux/ldflags-duplicates/lib2.c new file mode 100644 index 0000000000..8e7a082820 --- /dev/null +++ b/third_party/python/gyp/test/linux/ldflags-duplicates/lib2.c @@ -0,0 +1,6 @@ +// 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. + +void bar() { +} diff --git a/third_party/python/gyp/test/linux/ldflags-duplicates/main.c b/third_party/python/gyp/test/linux/ldflags-duplicates/main.c new file mode 100644 index 0000000000..b3039ace96 --- /dev/null +++ b/third_party/python/gyp/test/linux/ldflags-duplicates/main.c @@ -0,0 +1,7 @@ +// 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. + +int main() { + return 0; +} diff --git a/third_party/python/gyp/test/linux/ldflags-duplicates/test.gyp b/third_party/python/gyp/test/linux/ldflags-duplicates/test.gyp new file mode 100644 index 0000000000..c36835b18f --- /dev/null +++ b/third_party/python/gyp/test/linux/ldflags-duplicates/test.gyp @@ -0,0 +1,45 @@ +# 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. + +{ + 'make_global_settings': [ + ['LINK_wrapper', './check-ldflags.py'], + ], + 'targets': [ + { + 'target_name': 'test', + 'type': 'executable', + 'ldflags': [ + '-Wl,--whole-archive <(PRODUCT_DIR)/lib1.a', + '-Wl,--no-whole-archive', + + '-Wl,--whole-archive <(PRODUCT_DIR)/lib2.a', + '-Wl,--no-whole-archive', + ], + 'dependencies': [ + 'lib1', + 'lib2', + ], + 'sources': [ + 'main.c', + ], + }, + { + 'target_name': 'lib1', + 'type': 'static_library', + 'standalone_static_library': 1, + 'sources': [ + 'lib1.c', + ], + }, + { + 'target_name': 'lib2', + 'type': 'static_library', + 'standalone_static_library': 1, + 'sources': [ + 'lib2.c', + ], + }, + ], +} diff --git a/third_party/python/gyp/test/linux/ldflags-from-environment/main.c b/third_party/python/gyp/test/linux/ldflags-from-environment/main.c new file mode 100644 index 0000000000..1b8742a107 --- /dev/null +++ b/third_party/python/gyp/test/linux/ldflags-from-environment/main.c @@ -0,0 +1,7 @@ +// Copyright (c) 2017 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. + +int main() { + return 0; +} diff --git a/third_party/python/gyp/test/linux/ldflags-from-environment/test.gyp b/third_party/python/gyp/test/linux/ldflags-from-environment/test.gyp new file mode 100644 index 0000000000..7ed1d07ed5 --- /dev/null +++ b/third_party/python/gyp/test/linux/ldflags-from-environment/test.gyp @@ -0,0 +1,23 @@ +# Copyright (c) 2017 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. + +{ + 'targets': [ + { + 'target_name': 'ldflags', + 'type': 'executable', + 'sources': [ + 'main.c', + ], + }, + { + 'target_name': 'ldflags_host', + 'toolsets': ['host'], + 'type': 'executable', + 'sources': [ + 'main.c', + ], + }, + ], +} diff --git a/third_party/python/gyp/test/linux/target-rpath/file.c b/third_party/python/gyp/test/linux/target-rpath/file.c new file mode 100644 index 0000000000..56757a701b --- /dev/null +++ b/third_party/python/gyp/test/linux/target-rpath/file.c @@ -0,0 +1 @@ +void f() {} diff --git a/third_party/python/gyp/test/linux/target-rpath/main.c b/third_party/python/gyp/test/linux/target-rpath/main.c new file mode 100644 index 0000000000..237c8ce181 --- /dev/null +++ b/third_party/python/gyp/test/linux/target-rpath/main.c @@ -0,0 +1 @@ +int main() {} diff --git a/third_party/python/gyp/test/linux/target-rpath/test.gyp b/third_party/python/gyp/test/linux/target-rpath/test.gyp new file mode 100644 index 0000000000..b546106986 --- /dev/null +++ b/third_party/python/gyp/test/linux/target-rpath/test.gyp @@ -0,0 +1,47 @@ +# Copyright (c) 2013 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. +{ + 'targets': [ + { + 'target_name': 'shared', + 'type': 'shared_library', + 'sources': [ 'file.c' ], + }, + { + 'target_name': 'shared_no_so_suffix', + 'product_extension': 'so.0.1', + 'type': 'shared_library', + 'sources': [ 'file.c' ], + }, + { + 'target_name': 'static', + 'type': 'static_library', + 'sources': [ 'file.c' ], + }, + { + 'target_name': 'shared_executable', + 'type': 'executable', + 'sources': [ 'main.c' ], + 'dependencies': [ + 'shared', + ] + }, + { + 'target_name': 'shared_executable_no_so_suffix', + 'type': 'executable', + 'sources': [ 'main.c' ], + 'dependencies': [ + 'shared_no_so_suffix', + ] + }, + { + 'target_name': 'static_executable', + 'type': 'executable', + 'sources': [ 'main.c' ], + 'dependencies': [ + 'static', + ] + }, + ], +} |