diff options
Diffstat (limited to 'media/webrtc/trunk/tools/gyp/test/linux')
14 files changed, 300 insertions, 0 deletions
diff --git a/media/webrtc/trunk/tools/gyp/test/linux/gyptest-implicit-rpath.py b/media/webrtc/trunk/tools/gyp/test/linux/gyptest-implicit-rpath.py new file mode 100644 index 000000000..dd7718c76 --- /dev/null +++ b/media/webrtc/trunk/tools/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] + 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/media/webrtc/trunk/tools/gyp/test/linux/gyptest-ldflags-duplicates.py b/media/webrtc/trunk/tools/gyp/test/linux/gyptest-ldflags-duplicates.py new file mode 100644 index 000000000..43a4607ad --- /dev/null +++ b/media/webrtc/trunk/tools/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/media/webrtc/trunk/tools/gyp/test/linux/gyptest-target-rpath.py b/media/webrtc/trunk/tools/gyp/test/linux/gyptest-target-rpath.py new file mode 100644 index 000000000..2950a2026 --- /dev/null +++ b/media/webrtc/trunk/tools/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] + 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/media/webrtc/trunk/tools/gyp/test/linux/implicit-rpath/file.c b/media/webrtc/trunk/tools/gyp/test/linux/implicit-rpath/file.c new file mode 100644 index 000000000..56757a701 --- /dev/null +++ b/media/webrtc/trunk/tools/gyp/test/linux/implicit-rpath/file.c @@ -0,0 +1 @@ +void f() {} diff --git a/media/webrtc/trunk/tools/gyp/test/linux/implicit-rpath/main.c b/media/webrtc/trunk/tools/gyp/test/linux/implicit-rpath/main.c new file mode 100644 index 000000000..237c8ce18 --- /dev/null +++ b/media/webrtc/trunk/tools/gyp/test/linux/implicit-rpath/main.c @@ -0,0 +1 @@ +int main() {} diff --git a/media/webrtc/trunk/tools/gyp/test/linux/implicit-rpath/test.gyp b/media/webrtc/trunk/tools/gyp/test/linux/implicit-rpath/test.gyp new file mode 100644 index 000000000..b54610698 --- /dev/null +++ b/media/webrtc/trunk/tools/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/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/check-ldflags.py b/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/check-ldflags.py new file mode 100755 index 000000000..0515da95e --- /dev/null +++ b/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/check-ldflags.py @@ -0,0 +1,25 @@ +#!/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 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/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/lib1.c b/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/lib1.c new file mode 100644 index 000000000..a1322e739 --- /dev/null +++ b/media/webrtc/trunk/tools/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/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/lib2.c b/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/lib2.c new file mode 100644 index 000000000..8e7a08282 --- /dev/null +++ b/media/webrtc/trunk/tools/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/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/main.c b/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/main.c new file mode 100644 index 000000000..b3039ace9 --- /dev/null +++ b/media/webrtc/trunk/tools/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/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/test.gyp b/media/webrtc/trunk/tools/gyp/test/linux/ldflags-duplicates/test.gyp new file mode 100644 index 000000000..c36835b18 --- /dev/null +++ b/media/webrtc/trunk/tools/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/media/webrtc/trunk/tools/gyp/test/linux/target-rpath/file.c b/media/webrtc/trunk/tools/gyp/test/linux/target-rpath/file.c new file mode 100644 index 000000000..56757a701 --- /dev/null +++ b/media/webrtc/trunk/tools/gyp/test/linux/target-rpath/file.c @@ -0,0 +1 @@ +void f() {} diff --git a/media/webrtc/trunk/tools/gyp/test/linux/target-rpath/main.c b/media/webrtc/trunk/tools/gyp/test/linux/target-rpath/main.c new file mode 100644 index 000000000..237c8ce18 --- /dev/null +++ b/media/webrtc/trunk/tools/gyp/test/linux/target-rpath/main.c @@ -0,0 +1 @@ +int main() {} diff --git a/media/webrtc/trunk/tools/gyp/test/linux/target-rpath/test.gyp b/media/webrtc/trunk/tools/gyp/test/linux/target-rpath/test.gyp new file mode 100644 index 000000000..b54610698 --- /dev/null +++ b/media/webrtc/trunk/tools/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', + ] + }, + ], +} |