Browse Source

Fix quoting -passes option value (thanks for @spreis for hint)

ignat 1 year ago
parent
commit
c2f81b1b5f

+ 3 - 1
build/plugins/llvm_bc.py

@@ -29,7 +29,9 @@ def onllvm_bc(unit, *args):
         passes += ['internalize']
         # XXX: '#' used instead of ',' to overcome ymake tendency to split everything by comma
         opt_opts += ['-internalize-public-api-list=' + '#'.join(symbols)]
-    opt_opts += ['-passes={}'.format('${__COMMA__}'.join(passes))]
+    # Add additional quotes for cmake build.
+    # Generated final option for cmake looks like: -passes="..."
+    opt_opts += ['\'-passes="{}"\''.format('${__COMMA__}'.join(passes))]
     unit.onllvm_opt([merged_bc, out_bc] + opt_opts)
     if 'GENERATE_MACHINE_CODE' in kwds:
         unit.onllvm_llc([out_bc, '-O2'])

+ 8 - 1
build/scripts/llvm_opt_wrapper.py

@@ -4,9 +4,16 @@ import sys
 
 def fix(s):
     # we use '#' instead of ',' because ymake always splits args by comma
-    if 'internalize' in s:
+    if s.startswith('-internalize-public-api-list'):
         return s.replace('#', ',')
 
+    # Dirty hack to eliminate double quotes from value of passes option.
+    # Note that these double quoted are required by cmake.
+    if s.startswith('-passes'):
+        name, value = s.split('=', 1)
+        value = value.strip('"')
+        return '='.join([name, value])
+
     return s
 
 

+ 1 - 1
ydb/library/yql/minikql/codegen/ut/CMakeLists.darwin-arm64.txt

@@ -82,7 +82,7 @@ add_custom_command(
   -o
   ${CMAKE_BINARY_DIR}/ydb/library/yql/minikql/codegen/ut/Funcs_optimized.bc
   -internalize-public-api-list=fib#sum_sqr#sum_sqr2#sum_sqr_128#sum_sqr_128_ir#str_size
-  -passes=default<O2>,globalopt,globaldce,internalize
+  -passes="default<O2>,globalopt,globaldce,internalize"
 )
 add_custom_command(
   OUTPUT

+ 1 - 1
ydb/library/yql/minikql/codegen/ut/CMakeLists.darwin-x86_64.txt

@@ -83,7 +83,7 @@ add_custom_command(
   -o
   ${CMAKE_BINARY_DIR}/ydb/library/yql/minikql/codegen/ut/Funcs_optimized.bc
   -internalize-public-api-list=fib#sum_sqr#sum_sqr2#sum_sqr_128#sum_sqr_128_ir#str_size
-  -passes=default<O2>,globalopt,globaldce,internalize
+  -passes="default<O2>,globalopt,globaldce,internalize"
 )
 add_custom_command(
   OUTPUT

+ 1 - 1
ydb/library/yql/minikql/codegen/ut/CMakeLists.linux-aarch64.txt

@@ -86,7 +86,7 @@ add_custom_command(
   -o
   ${CMAKE_BINARY_DIR}/ydb/library/yql/minikql/codegen/ut/Funcs_optimized.bc
   -internalize-public-api-list=fib#sum_sqr#sum_sqr2#sum_sqr_128#sum_sqr_128_ir#str_size
-  -passes=default<O2>,globalopt,globaldce,internalize
+  -passes="default<O2>,globalopt,globaldce,internalize"
 )
 add_custom_command(
   OUTPUT

+ 1 - 1
ydb/library/yql/minikql/codegen/ut/CMakeLists.linux-x86_64.txt

@@ -87,7 +87,7 @@ add_custom_command(
   -o
   ${CMAKE_BINARY_DIR}/ydb/library/yql/minikql/codegen/ut/Funcs_optimized.bc
   -internalize-public-api-list=fib#sum_sqr#sum_sqr2#sum_sqr_128#sum_sqr_128_ir#str_size
-  -passes=default<O2>,globalopt,globaldce,internalize
+  -passes="default<O2>,globalopt,globaldce,internalize"
 )
 add_custom_command(
   OUTPUT

+ 1 - 1
ydb/library/yql/minikql/codegen/ut/CMakeLists.windows-x86_64.txt

@@ -76,7 +76,7 @@ add_custom_command(
   -o
   ${CMAKE_BINARY_DIR}/ydb/library/yql/minikql/codegen/ut/Funcs_optimized.bc
   -internalize-public-api-list=fib#sum_sqr#sum_sqr2#sum_sqr_128#sum_sqr_128_ir#str_size
-  -passes=default<O2>,globalopt,globaldce,internalize
+  -passes="default<O2>,globalopt,globaldce,internalize"
 )
 add_custom_command(
   OUTPUT

+ 1 - 1
ydb/library/yql/providers/yt/codec/codegen/CMakeLists.darwin-arm64.txt

@@ -74,7 +74,7 @@ add_custom_command(
   -o
   ${CMAKE_BINARY_DIR}/ydb/library/yql/providers/yt/codec/codegen/YtCodecFuncs_optimized.bc
   -internalize-public-api-list=WriteJust#WriteNothing#WriteBool#Write8#Write16#Write32#Write64#Write120#WriteDecimal32#WriteDecimal64#WriteDecimal128#WriteFloat#WriteDouble#WriteString#ReadBool#ReadInt8#ReadUint8#ReadInt16#ReadUint16#ReadInt32#ReadUint32#ReadInt64#ReadUint64#ReadInt120#ReadDecimal32#ReadDecimal64#ReadDecimal128#ReadFloat#ReadDouble#ReadOptional#ReadVariantData#SkipFixedData#SkipVarData#ReadTzDate#ReadTzDatetime#ReadTzTimestamp#WriteTzDate#WriteTzDatetime#WriteTzTimestamp#GetWrittenBytes#FillZero
-  -passes=default<O2>,globalopt,globaldce,internalize
+  -passes="default<O2>,globalopt,globaldce,internalize"
 )
 add_custom_command(
   OUTPUT

+ 1 - 1
ydb/library/yql/providers/yt/codec/codegen/CMakeLists.darwin-x86_64.txt

@@ -74,7 +74,7 @@ add_custom_command(
   -o
   ${CMAKE_BINARY_DIR}/ydb/library/yql/providers/yt/codec/codegen/YtCodecFuncs_optimized.bc
   -internalize-public-api-list=WriteJust#WriteNothing#WriteBool#Write8#Write16#Write32#Write64#Write120#WriteDecimal32#WriteDecimal64#WriteDecimal128#WriteFloat#WriteDouble#WriteString#ReadBool#ReadInt8#ReadUint8#ReadInt16#ReadUint16#ReadInt32#ReadUint32#ReadInt64#ReadUint64#ReadInt120#ReadDecimal32#ReadDecimal64#ReadDecimal128#ReadFloat#ReadDouble#ReadOptional#ReadVariantData#SkipFixedData#SkipVarData#ReadTzDate#ReadTzDatetime#ReadTzTimestamp#WriteTzDate#WriteTzDatetime#WriteTzTimestamp#GetWrittenBytes#FillZero
-  -passes=default<O2>,globalopt,globaldce,internalize
+  -passes="default<O2>,globalopt,globaldce,internalize"
 )
 add_custom_command(
   OUTPUT

+ 1 - 1
ydb/library/yql/providers/yt/codec/codegen/CMakeLists.linux-aarch64.txt

@@ -76,7 +76,7 @@ add_custom_command(
   -o
   ${CMAKE_BINARY_DIR}/ydb/library/yql/providers/yt/codec/codegen/YtCodecFuncs_optimized.bc
   -internalize-public-api-list=WriteJust#WriteNothing#WriteBool#Write8#Write16#Write32#Write64#Write120#WriteDecimal32#WriteDecimal64#WriteDecimal128#WriteFloat#WriteDouble#WriteString#ReadBool#ReadInt8#ReadUint8#ReadInt16#ReadUint16#ReadInt32#ReadUint32#ReadInt64#ReadUint64#ReadInt120#ReadDecimal32#ReadDecimal64#ReadDecimal128#ReadFloat#ReadDouble#ReadOptional#ReadVariantData#SkipFixedData#SkipVarData#ReadTzDate#ReadTzDatetime#ReadTzTimestamp#WriteTzDate#WriteTzDatetime#WriteTzTimestamp#GetWrittenBytes#FillZero
-  -passes=default<O2>,globalopt,globaldce,internalize
+  -passes="default<O2>,globalopt,globaldce,internalize"
 )
 add_custom_command(
   OUTPUT

Some files were not shown because too many files changed in this diff