Browse Source

Use llvm-lib instead of lib.exe for clang-win target
9c1a51fbc15924d93a0b7008ddc9a60722f08505

egovol 11 months ago
parent
commit
7db0665b94

+ 3 - 1
build/conf/linkers/msvc_linker.conf

@@ -117,9 +117,11 @@ LINK_EXTRA_OUTPUT=$_LINK_EXTRA_OUTPUT
 LIB_WRAPPER=${FIX_MSVC_OUTPUT} lib
 LINK_WRAPPER=${FIX_MSVC_OUTPUT} link
 when ($_UNDER_WINE_TOOLS == "yes") {
-    LIB_WRAPPER=
     LINK_WRAPPER=
 }
+when ($_UNDER_WINE_LIB == "yes") {
+    LIB_WRAPPER=
+}
 
 LINK_WRAPPER_DYNLIB=${YMAKE_PYTHON} ${input:"build/scripts/link_dyn_lib.py"} --arch WINDOWS --target $TARGET
 

+ 3 - 1
build/conf/toolchains/msvc_toolchain.conf

@@ -11,9 +11,11 @@ _WINE_LIB_PREFIX=
 _WINE_MASM_PREFIX=
 when ($_UNDER_WINE_TOOLS == "yes") {
     _WINE_LINK_PREFIX=${_WINE_CMD} link ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
-    _WINE_LIB_PREFIX=${_WINE_CMD} lib ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
     _WINE_MASM_PREFIX=${_WINE_CMD} masm ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
 }
+when ($_UNDER_WINE_LIB == "yes") {
+    _WINE_LIB_PREFIX=${_WINE_CMD} lib ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
+}
 when ($_UNDER_WINE_COMPILER == "yes") {
     _WINE_C_PREFIX=${_WINE_CMD} c ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
     _WINE_CXX_PREFIX=${_WINE_CMD} cxx ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}

+ 12 - 1
build/ymake_conf.py

@@ -1793,6 +1793,7 @@ class MSVCToolchainOptions(ToolchainOptions):
 
         self.under_wine_compiler = self.params.get('wine', False)
         self.under_wine_tools = not build.host.is_windows
+        self.under_wine_lib = self.under_wine_tools
         self.system_msvc = self.params.get('system_msvc', False)
         self.ide_msvs = self.params.get('ide_msvs', False)
         self.use_clang = self.params.get('use_clang', False)
@@ -1865,7 +1866,15 @@ class MSVCToolchainOptions(ToolchainOptions):
 
             self.masm_compiler = win_path_fix(os.path.join(bindir, tools_name, asm_name))
             self.link = win_path_fix(os.path.join(bindir, tools_name, 'link.exe'))
-            self.lib = win_path_fix(os.path.join(bindir, tools_name, 'lib.exe'))
+
+            if self.use_clang:
+                self.lib = self.host.exe(self.name_marker, "bin", "llvm-lib")
+                self.under_wine_lib = False
+            else:
+                self.lib = win_path_fix(os.path.join(bindir, tools_name, 'lib.exe'))
+                self.under_wine_lib = self.under_wine_tools
+
+            logger.debug("link {}; lib {}".format(self.link, self.lib))
 
 
 class MSVC(object):
@@ -1905,6 +1914,8 @@ class MSVCToolchain(MSVC, Toolchain):
 
         if self.tc.under_wine_tools:
             emit('_UNDER_WINE_TOOLS', 'yes')
+        if self.tc.under_wine_lib:
+            emit('_UNDER_WINE_LIB', 'yes')
         if self.tc.under_wine_compiler:
             emit('_UNDER_WINE_COMPILER', 'yes')
         if self.tc.use_clang: