1# Copyright 2013 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5{ 6 'targets': [ 7 { 8 'target_name': 'libcxx_proxy', 9 'type': 'none', 10 'dependencies=': [ 11 'libc++', 12 ], 13 # Do not add dependency on libc++.so to dependents of this target. We 14 # don't want to pass libc++.so on the command line to the linker, as that 15 # would cause it to be linked into C executables which don't need it. 16 # Instead, we supply -stdlib=libc++ and let the clang driver decide. 17 'dependencies_traverse': 0, 18 'variables': { 19 # Don't add this target to the dependencies of targets with type=none. 20 'link_dependency': 1, 21 }, 22 'all_dependent_settings': { 23 'target_conditions': [ 24 ['_type!="none"', { 25 'include_dirs': [ 26 'trunk/include', 27 '../libc++abi/trunk/include', 28 ], 29 'cflags_cc': [ 30 '-nostdinc++', 31 ], 32 'ldflags': [ 33 '-stdlib=libc++', 34 # Normally the generator takes care of RPATH. Our case is special 35 # because the generator is unaware of the libc++.so dependency. 36 # Note that setting RPATH here is a potential security issue. See: 37 # https://code.google.com/p/gyp/issues/detail?id=315 38 '-Wl,-R,\$$ORIGIN/lib/', 39 ], 40 'library_dirs': [ 41 '<(PRODUCT_DIR)/lib/', 42 ], 43 }], 44 ], 45 }, 46 }, 47 { 48 'target_name': 'libc++', 49 'type': 'shared_library', 50 'dependencies=': [ 51 # libc++abi is linked statically into libc++.so. This allows us to get 52 # both libc++ and libc++abi by passing '-stdlib=libc++'. If libc++abi 53 # was a separate DSO, we'd have to link against it explicitly. 54 '../libc++abi/libc++abi.gyp:libc++abi', 55 ], 56 'sources': [ 57 'trunk/src/algorithm.cpp', 58 'trunk/src/bind.cpp', 59 'trunk/src/chrono.cpp', 60 'trunk/src/condition_variable.cpp', 61 'trunk/src/debug.cpp', 62 'trunk/src/exception.cpp', 63 'trunk/src/future.cpp', 64 'trunk/src/hash.cpp', 65 'trunk/src/ios.cpp', 66 'trunk/src/iostream.cpp', 67 'trunk/src/locale.cpp', 68 'trunk/src/memory.cpp', 69 'trunk/src/mutex.cpp', 70 'trunk/src/new.cpp', 71 'trunk/src/optional.cpp', 72 'trunk/src/random.cpp', 73 'trunk/src/regex.cpp', 74 'trunk/src/shared_mutex.cpp', 75 'trunk/src/stdexcept.cpp', 76 'trunk/src/string.cpp', 77 'trunk/src/strstream.cpp', 78 'trunk/src/system_error.cpp', 79 'trunk/src/thread.cpp', 80 'trunk/src/typeinfo.cpp', 81 'trunk/src/utility.cpp', 82 'trunk/src/valarray.cpp', 83 ], 84 'include_dirs': [ 85 'trunk/include', 86 '../libc++abi/trunk/include', 87 ], 88 'cflags': [ 89 '-fstrict-aliasing', 90 '-nostdinc++', 91 '-std=c++11', 92 ], 93 'cflags_cc!': [ 94 '-fno-exceptions', 95 '-fno-rtti', 96 ], 97 'cflags!': [ 98 '-fvisibility=hidden', 99 ], 100 'ldflags': [ 101 '-nodefaultlibs', 102 ], 103 'ldflags!': [ 104 # This somehow causes a warning from clang about an unused compilation 105 # option. Use '-lpthread' instead. 106 # TODO(earthdok): find out what's causing the warning. 107 '-pthread', 108 ], 109 'libraries': [ 110 '-lc', 111 '-lgcc_s', 112 '-lpthread', 113 '-lrt', 114 ], 115 }, 116 ] 117} 118