Browse Source

win: Fix link errors caused by libicu

Cheng Zhao 10 years ago
parent
commit
1f66006c93
2 changed files with 31 additions and 0 deletions
  1. 8 0
      atom/common/node_bindings.cc
  2. 23 0
      common.gypi

+ 8 - 0
atom/common/node_bindings.cc

@@ -52,6 +52,14 @@ REFERENCE_MODULE(atom_renderer_ipc);
 REFERENCE_MODULE(atom_renderer_web_frame);
 #undef REFERENCE_MODULE
 
+// The "v8::Function::kLineOffsetNotFound" is exported in node.dll, but the
+// linker can not find it, could be a bug of VS.
+#if defined(OS_WIN) && !defined(DEBUG)
+namespace v8 {
+const int Function::kLineOffsetNotFound = -1;
+}
+#endif
+
 namespace atom {
 
 namespace {

+ 23 - 0
common.gypi

@@ -102,10 +102,33 @@
         'include_dirs': [ '<(libchromiumcontent_src_dir)/v8/include' ],
         'conditions': [
           ['OS=="mac" and libchromiumcontent_component==0', {
+            # -all_load is the "whole-archive" on OS X.
             'xcode_settings': {
               'OTHER_LDFLAGS': [ '-Wl,-all_load' ],
             },
           }],
+          ['OS=="win" and libchromiumcontent_component==0', {
+            'libraries': [ '-lwinmm.lib' ],
+            'msvs_settings': {
+              'VCLinkerTool': {
+                # There is nothing like "whole-archive" on Windows, so we
+                # have to manually force some objets files to be included
+                # by referencing them.
+                'ForceSymbolReferences': [
+                  '_u_errorName_52',
+                  '_ubidi_setPara_52',
+                  '_ucsdet_getName_52',
+                  '_ulocdata_close_52',
+                  '_uregex_matches_52',
+                  '_uscript_getCode_52',
+                  '_usearch_setPattern_52',
+                  '?createInstance@Transliterator@icu_52@@SAPAV12@ABVUnicodeString@2@W4UTransDirection@@AAW4UErrorCode@@@Z',
+                  '?nameToUnicodeUTF8@IDNA@icu_52@@UBEXABVStringPiece@2@AAVByteSink@2@AAVIDNAInfo@2@AAW4UErrorCode@@@Z',
+                  '?kLineOffsetNotFound@Function@v8@@2HB',
+                ],  # '/INCLUDE'
+              },
+            },
+          }],
           ['OS=="linux" and libchromiumcontent_component==0', {
             # Prevent the linker from stripping symbols.
             'ldflags': [