diff options
Diffstat (limited to 'third_party/python/gyp/test/link-dependency')
4 files changed, 79 insertions, 0 deletions
diff --git a/third_party/python/gyp/test/link-dependency/gyptest-link-dependency.py b/third_party/python/gyp/test/link-dependency/gyptest-link-dependency.py new file mode 100755 index 0000000000..3a8300d44e --- /dev/null +++ b/third_party/python/gyp/test/link-dependency/gyptest-link-dependency.py @@ -0,0 +1,23 @@ +#!/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. + +""" +Verify that a target marked as 'link_dependency==1' isn't being pulled into +the 'none' target's dependency (which would otherwise lead to a dependency +cycle in ninja). +""" + +import TestGyp + +# See https://codereview.chromium.org/177043010/#msg15 for why this doesn't +# work with cmake. +test = TestGyp.TestGyp(formats=['!cmake']) + +test.run_gyp('test.gyp') +test.build('test.gyp', 'main') + +# If running gyp worked, all is well. +test.pass_test() diff --git a/third_party/python/gyp/test/link-dependency/main.c b/third_party/python/gyp/test/link-dependency/main.c new file mode 100644 index 0000000000..543d8b6951 --- /dev/null +++ b/third_party/python/gyp/test/link-dependency/main.c @@ -0,0 +1,7 @@ +#include <stdio.h> +#include <stdlib.h> +int main() { + void *p = malloc(1); + printf("p: %p\n", p); + return 0; +} diff --git a/third_party/python/gyp/test/link-dependency/mymalloc.c b/third_party/python/gyp/test/link-dependency/mymalloc.c new file mode 100644 index 0000000000..f80bc02a62 --- /dev/null +++ b/third_party/python/gyp/test/link-dependency/mymalloc.c @@ -0,0 +1,12 @@ +#include <stdlib.h> + +// The windows ninja generator is expecting an import library to get generated, +// but it doesn't if there are no exports. +#ifdef _MSC_VER +__declspec(dllexport) void foo() {} +#endif + +void *malloc(size_t size) { + (void)size; + return (void*)0xdeadbeef; +} diff --git a/third_party/python/gyp/test/link-dependency/test.gyp b/third_party/python/gyp/test/link-dependency/test.gyp new file mode 100644 index 0000000000..47cec15005 --- /dev/null +++ b/third_party/python/gyp/test/link-dependency/test.gyp @@ -0,0 +1,37 @@ +{ + 'variables': { + 'custom_malloc%' : 1, + }, + 'target_defaults': { + 'conditions': [ + ['custom_malloc==1', { + 'dependencies': [ + 'malloc', + ], + }], + ], + }, + 'targets': [ + { + 'target_name': 'main', + 'type': 'none', + 'dependencies': [ 'main_initial',], + }, + { + 'target_name': 'main_initial', + 'type': 'executable', + 'product_name': 'main', + 'sources': [ 'main.c' ], + }, + { + 'target_name': 'malloc', + 'type': 'shared_library', + 'variables': { + 'prune_self_dependency': 1, + # Targets with type 'none' won't depend on this target. + 'link_dependency': 1, + }, + 'sources': [ 'mymalloc.c' ], + }, + ], +} |