Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / libc++ / libc++.gyp
index fd9c604..0e6fbe4 100644 (file)
@@ -5,12 +5,54 @@
 {
   'targets': [
     {
-      'target_name': 'libc++',
-      'type': 'shared_library',
+      'target_name': 'libcxx_proxy',
+      'type': 'none',
+      'dependencies=': [
+        'libc++',
+      ],
+      # Do not add dependency on libc++.so to dependents of this target. We
+      # don't want to pass libc++.so on the command line to the linker, as that
+      # would cause it to be linked into C executables which don't need it.
+      # Instead, we supply -stdlib=libc++ and let the clang driver decide.
+      'dependencies_traverse': 0,
       'variables': {
-         'prune_self_dependency': 1,
+        # Don't add this target to the dependencies of targets with type=none.
+        'link_dependency': 1,
       },
-      'dependencies=': [],
+      'direct_dependent_settings': {
+        'target_conditions': [
+          ['_type!="none"', {
+            'include_dirs': [
+              'trunk/include',
+              '../libc++abi/trunk/include',
+            ],
+            'cflags_cc': [
+              '-nostdinc++',
+            ],
+            'ldflags': [
+              '-stdlib=libc++',
+              # Normally the generator takes care of RPATH. Our case is special
+              # because the generator is unaware of the libc++.so dependency.
+              # Note that setting RPATH here is a potential security issue. See:
+              # https://code.google.com/p/gyp/issues/detail?id=315
+              '-Wl,-R,\$$ORIGIN/lib/',
+            ],
+            'library_dirs': [
+              '<(PRODUCT_DIR)/lib/',
+            ],
+          }],
+        ],
+      },
+    },
+    {
+      'target_name': 'libc++',
+      'type': 'shared_library',
+      'dependencies=': [
+        # libc++abi is linked statically into libc++.so. This allows us to get
+        # both libc++ and libc++abi by passing '-stdlib=libc++'. If libc++abi
+        # was a separate DSO, we'd have to link against it explicitly.
+        '../libc++abi/libc++abi.gyp:libc++abi',
+      ],
       'sources': [
         'trunk/src/algorithm.cpp',
         'trunk/src/bind.cpp',
         '-Wstrict-overflow=4',
         '-nostdinc++',
       ],
-      'direct_dependent_settings': {
-        'target_conditions': [
-          ['_type!="none"', {
-            'include_dirs': [
-              'trunk/include',
-            ],
-            'cflags_cc': [
-              '-nostdinc++',
-            ],
-            'ldflags': [
-              '-stdlib=libc++',
-              '-L<(PRODUCT_DIR)/lib/',
-            ],
-          }],
-        ],
-      },
       'cflags_cc!': [
         '-fno-rtti',
       ],
         '-nodefaultlibs',
       ],
       'ldflags!': [
+        # This somehow causes a warning from clang about an unused compilation
+        # option. Use '-lpthread' instead.
+        # TODO(earthdok): find out what's causing the warning.
         '-pthread',
       ],
       'libraries': [
-        '-lrt',
         '-lc',
+        '-lgcc_s',
+        '-lpthread',
+        '-lrt',
       ],
     },
   ]