summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnermolaev <[email protected]>2024-03-11 05:17:13 +0300
committersnermolaev <[email protected]>2024-03-11 05:37:08 +0300
commit1041341d148dcfa9aae4928131380c160936514d (patch)
tree02707ebf18f18d1a40bdadd2ca849080561eac0e
parent27deb40acd9c3798fe9ab7c88e50d532bccf924a (diff)
respect whitespaces in paths to tools
621356531cf85b8487463c8df871341bed1171f9
-rw-r--r--build/conf/compilers/msvc_compiler.conf10
-rw-r--r--build/conf/linkers/msvc_linker.conf11
-rw-r--r--build/conf/toolchains/msvc_toolchain.conf17
-rw-r--r--build/ya.conf.json3
-rwxr-xr-xbuild/ymake_conf.py47
5 files changed, 49 insertions, 39 deletions
diff --git a/build/conf/compilers/msvc_compiler.conf b/build/conf/compilers/msvc_compiler.conf
index 9455570d59d..9725dece3c0 100644
--- a/build/conf/compilers/msvc_compiler.conf
+++ b/build/conf/compilers/msvc_compiler.conf
@@ -1,5 +1,9 @@
_STD_CXX=/std:$_STD_CXX_VERSION
+C_COMPILER=${_WINE_C_PREFIX} ${quo:C_COMPILER_UNQUOTED}
+CXX_COMPILER=${_WINE_CXX_PREFIX} ${quo:CXX_COMPILER_UNQUOTED}
+MASM_COMPILER=${_WINE_MASM_PREFIX} ${quo:MASM_COMPILER_UNQUOTED}
+
MSVC_INLINE_OPTIMIZED=yes
when ($MSVC_INLINE_OPTIMIZED == "yes") {
MSVC_INLINE_FLAG=/Zc:inline
@@ -78,9 +82,11 @@ SFDL_FLAG=/E /C /P /TP /Fi$SFDL_TMP_OUT
WERROR_FLAG=/WX
CL_WRAPPER=${FIX_MSVC_OUTPUT} cl
-ML_WRAPPER=${FIX_MSVC_OUTPUT} ml
-when ($_UNDER_WINE == "yes" && $CLANG_CL !="yes") {
+when ($_UNDER_WINE_COMPILER == "yes" || $CLANG_CL == "yes") {
CL_WRAPPER=
+}
+ML_WRAPPER=${FIX_MSVC_OUTPUT} ml
+when ($_UNDER_WINE_TOOLS == "yes") {
ML_WRAPPER=
}
diff --git a/build/conf/linkers/msvc_linker.conf b/build/conf/linkers/msvc_linker.conf
index 27d3a41b203..5c226298eb5 100644
--- a/build/conf/linkers/msvc_linker.conf
+++ b/build/conf/linkers/msvc_linker.conf
@@ -1,3 +1,6 @@
+LINK_EXE_CMD=${_WINE_LINK_PREFIX} ${quo:_MSVC_LINK_UNQUOTED}
+LINK_LIB_CMD=${_WINE_LIB_PREFIX} ${quo:_MSVC_LIB_UNQUOTED}
+
_MSVC_ARCH=
when ($ARCH_I386 == "yes" || $ARCH_I686 == "yes") {
_MSVC_ARCH=x86
@@ -43,9 +46,9 @@ when (!$NO_DEBUGINFO || $NO_DEBUGINFO == "no" || $NO_DEBUGINFO == "0") {
_FLAGS_COMMON_LIBPATHS=
when ($IDE_MSVS != "yes") {
_FLAGS_COMMON_LIBPATHS=\
- /LIBPATH:"$_MSVC_TC_KIT_LIBS/um/$_MSVC_ARCH" \
- /LIBPATH:"$_MSVC_TC_KIT_LIBS/ucrt/$_MSVC_ARCH" \
- /LIBPATH:"$_MSVC_TC_VC_ROOT/lib/$_MSVC_ARCH"
+ /LIBPATH:\"${quo:_MSVC_TC_KIT_LIBS}/um/$_MSVC_ARCH\" \
+ /LIBPATH:\"${quo:_MSVC_TC_KIT_LIBS}/ucrt/$_MSVC_ARCH\" \
+ /LIBPATH:\"${quo:_MSVC_TC_VC_ROOT}/lib/$_MSVC_ARCH\"
}
_FLAGS_COMMON =/NOLOGO /ERRORREPORT:PROMPT /SUBSYSTEM:CONSOLE /TLBID:1 $MSVC_DYNAMICBASE /NXCOMPAT
@@ -113,7 +116,7 @@ LINK_EXTRA_OUTPUT=$_LINK_EXTRA_OUTPUT
LIB_WRAPPER=${FIX_MSVC_OUTPUT} lib
LINK_WRAPPER=${FIX_MSVC_OUTPUT} link
-when ($_UNDER_WINE == "yes") {
+when ($_UNDER_WINE_TOOLS == "yes") {
LIB_WRAPPER=
LINK_WRAPPER=
}
diff --git a/build/conf/toolchains/msvc_toolchain.conf b/build/conf/toolchains/msvc_toolchain.conf
index 6b4d6b5c453..5ae213e275b 100644
--- a/build/conf/toolchains/msvc_toolchain.conf
+++ b/build/conf/toolchains/msvc_toolchain.conf
@@ -2,6 +2,19 @@
# для любых платформ. Нужно унифицировать с GnuToolchain.
C_FLAGS_PLATFORM=
-when ($_UNDER_WINE == "yes") {
- WINE_ENV=${env:"WINEPREFIX_SUFFIX=4.0"}
+_WINE_CMD=${YMAKE_PYTHON} ${input:"build/scripts/run_msvc_wine.py"} ${input;hide:"build/scripts/process_command_files.py"} ${input;hide:"build/scripts/process_whole_archive_option.py"} $(WINE_TOOL-sbr:1093314933)/bin/wine64 -v140 ${env:"WINEPREFIX_SUFFIX=4.0"}
+
+_WINE_C_PREFIX=
+_WINE_CXX_PREFIX=
+_WINE_LINK_PREFIX=
+_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_COMPILER == "yes") {
+ _WINE_C_PREFIX=${_WINE_CMD} c ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
+ _WINE_CXX_PREFIX=${_WINE_CMD} cxx ${ARCADIA_ROOT} ${ARCADIA_BUILD_ROOT}
}
diff --git a/build/ya.conf.json b/build/ya.conf.json
index 14b62d870f2..35d846286e1 100644
--- a/build/ya.conf.json
+++ b/build/ya.conf.json
@@ -1534,8 +1534,7 @@
"use_bundle": true,
"use_clang": true,
"version": "2019",
- "werror_mode": "all",
- "wine": "yes"
+ "werror_mode": "all"
},
"platforms": [
{
diff --git a/build/ymake_conf.py b/build/ymake_conf.py
index 6ed60f33539..87719382e7c 100755
--- a/build/ymake_conf.py
+++ b/build/ymake_conf.py
@@ -1775,17 +1775,15 @@ class MSVCToolchainOptions(ToolchainOptions):
# C:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0
self.kit_libs = None
- self.under_wine = 'wine' in self.params
- self.system_msvc = 'system_msvc' in self.params
- self.ide_msvs = 'ide_msvs' in self.params
+ self.under_wine_compiler = self.params.get('wine', False)
+ self.under_wine_tools = not build.host.is_windows
+ 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)
self.use_arcadia_toolchain = self.params.get('use_arcadia_toolchain', False)
self.sdk_version = None
- if build.host.is_windows:
- self.under_wine = False
-
if self.ide_msvs:
bindir = '$(VC_ExecutablePath_x64_x64)\\'
self.c_compiler = bindir + 'cl.exe'
@@ -1827,12 +1825,11 @@ class MSVCToolchainOptions(ToolchainOptions):
else:
if self.version_at_least(2019):
self.sdk_version = '10.0.18362.0'
- sdk_dir = '$(WINDOWS_KITS-sbr:1939557911)'
if is_positive('MSVC20'): # XXX: temporary flag, remove after DTCC-123 is completed
self.cxx_std = 'c++latest'
else:
self.sdk_version = '10.0.16299.0'
- sdk_dir = '$(WINDOWS_KITS-sbr:1379398385)'
+ sdk_dir = '$WINDOWS_KITS_RESOURCE_GLOBAL'
self.vc_root = self.name_marker if not self.use_clang else '$MSVC_FOR_CLANG_RESOURCE_GLOBAL'
self.kit_includes = os.path.join(sdk_dir, 'Include', self.sdk_version)
@@ -1852,19 +1849,9 @@ class MSVCToolchainOptions(ToolchainOptions):
(build.target.is_armv7, 'armasm.exe'),
])
- def prefix(_type, _path):
- if not self.under_wine:
- return _path
- return '{wine} {type} $WINE_ENV ${{ARCADIA_ROOT}} ${{ARCADIA_BUILD_ROOT}} {path}'.format(
- wine='${YMAKE_PYTHON} ${input:\"build/scripts/run_msvc_wine.py\"} $(WINE_TOOL-sbr:1093314933)/bin/wine64 -v140 ' +
- '${input;hide:\"build/scripts/process_command_files.py\"} ${input;hide:\"build/scripts/process_whole_archive_option.py\"}',
- type=_type,
- path=_path
- )
-
- self.masm_compiler = prefix('masm', os.path.join(bindir, tools_name, asm_name))
- self.link = prefix('link', os.path.join(bindir, tools_name, 'link.exe'))
- self.lib = prefix('lib', os.path.join(bindir, tools_name, 'lib.exe'))
+ self.masm_compiler = os.path.join(bindir, tools_name, asm_name)
+ self.link = os.path.join(bindir, tools_name, 'link.exe')
+ self.lib = os.path.join(bindir, tools_name, 'lib.exe')
class MSVC(object):
@@ -1891,7 +1878,7 @@ class MSVCToolchain(MSVC, Toolchain):
if self.tc.from_arcadia and not self.tc.ide_msvs:
self.platform_projects.append('build/internal/platform/msvc')
- if tc.under_wine:
+ if tc.under_wine_compiler or tc.under_wine_tools:
self.platform_projects.append('build/platform/wine')
def print_toolchain(self):
@@ -1902,8 +1889,10 @@ class MSVCToolchain(MSVC, Toolchain):
if self.tc.sdk_version:
emit('WINDOWS_KITS_VERSION', self.tc.sdk_version)
- if self.tc.under_wine:
- emit('_UNDER_WINE', 'yes')
+ if self.tc.under_wine_tools:
+ emit('_UNDER_WINE_TOOLS', 'yes')
+ if self.tc.under_wine_compiler:
+ emit('_UNDER_WINE_COMPILER', 'yes')
if self.tc.use_clang:
emit('CLANG_CL', 'yes')
if self.tc.ide_msvs:
@@ -2096,9 +2085,9 @@ class MSVCCompiler(MSVC, Compiler):
if self.tc.use_arcadia_toolchain:
emit('USE_ARCADIA_TOOLCHAIN', 'yes')
- emit('CXX_COMPILER', self.tc.cxx_compiler)
- emit('C_COMPILER', self.tc.c_compiler)
- emit('MASM_COMPILER', self.tc.masm_compiler)
+ emit('CXX_COMPILER_UNQUOTED', self.tc.cxx_compiler)
+ emit('C_COMPILER_UNQUOTED', self.tc.c_compiler)
+ emit('MASM_COMPILER_UNQUOTED', self.tc.masm_compiler)
append('C_DEFINES', defines)
append('C_WARNING_OPTS', c_warnings)
emit('_CXX_DEFINES', cxx_defines)
@@ -2139,8 +2128,8 @@ class MSVCLinker(MSVC, Linker):
linker = self.tc.link
linker_lib = self.tc.lib
- emit('LINK_LIB_CMD', linker_lib)
- emit('LINK_EXE_CMD', linker)
+ emit('_MSVC_LIB_UNQUOTED', linker_lib)
+ emit('_MSVC_LINK_UNQUOTED', linker)
if self.build.is_release:
emit('LINK_EXE_FLAGS_PER_TYPE', '$LINK_EXE_FLAGS_RELEASE')