Skip to content

Commit 70cfa2f

Browse files
committed
[runtimes] Factor out serialize_lit_param to a separate file
This introduces new macros that expect an output variable and a new macro serialize_lit_string_param() that ensure that the serialized value is escaped appropriately to store it into a python change.
1 parent e83eb23 commit 70cfa2f

File tree

4 files changed

+38
-37
lines changed

4 files changed

+38
-37
lines changed

libcxx/test/CMakeLists.txt

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
include(HandleLitArguments)
12
add_subdirectory(tools)
23

34
# By default, libcxx and libcxxabi share a library directory.
@@ -9,39 +10,35 @@ endif()
910
set(AUTO_GEN_COMMENT "## Autogenerated by libcxx configuration.\n# Do not edit!")
1011
set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n")
1112

12-
macro(serialize_lit_param param value)
13-
string(APPEND SERIALIZED_LIT_PARAMS "config.${param} = ${value}\n")
14-
endmacro()
15-
1613
if (LIBCXX_EXECUTOR)
1714
message(DEPRECATION "LIBCXX_EXECUTOR is deprecated, please add executor=... to LIBCXX_TEST_PARAMS")
18-
serialize_lit_param(executor "\"${LIBCXX_EXECUTOR}\"")
15+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS executor "${LIBCXX_EXECUTOR}")
1916
endif()
2017

2118
if (NOT LIBCXX_ENABLE_EXCEPTIONS)
22-
serialize_lit_param(enable_exceptions False)
19+
serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False)
2320
endif()
2421

2522
if (NOT LIBCXX_ENABLE_RTTI)
26-
serialize_lit_param(enable_rtti False)
23+
serialize_lit_param(SERIALIZED_LIT_PARAMS enable_rtti False)
2724
endif()
2825

29-
serialize_lit_param(hardening_mode "\"${LIBCXX_HARDENING_MODE}\"")
26+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS hardening_mode "${LIBCXX_HARDENING_MODE}")
3027

3128
if (CMAKE_CXX_COMPILER_TARGET)
32-
serialize_lit_param(target_triple "\"${CMAKE_CXX_COMPILER_TARGET}\"")
29+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${CMAKE_CXX_COMPILER_TARGET}")
3330
else()
34-
serialize_lit_param(target_triple "\"${LLVM_DEFAULT_TARGET_TRIPLE}\"")
31+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${LLVM_DEFAULT_TARGET_TRIPLE}")
3532
endif()
3633

3734
if (LLVM_USE_SANITIZER)
38-
serialize_lit_param(use_sanitizer "\"${LLVM_USE_SANITIZER}\"")
35+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS use_sanitizer "${LLVM_USE_SANITIZER}")
3936
endif()
4037

4138
foreach(param IN LISTS LIBCXX_TEST_PARAMS)
4239
string(REGEX REPLACE "(.+)=(.+)" "\\1" name "${param}")
4340
string(REGEX REPLACE "(.+)=(.+)" "\\2" value "${param}")
44-
serialize_lit_param("${name}" "\"${value}\"")
41+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS "${name}" "${value}")
4542
endforeach()
4643

4744
if (NOT DEFINED LIBCXX_TEST_DEPS)
@@ -68,9 +65,9 @@ if (MSVC)
6865
set(cxx_lib "${cxx_lib}d")
6966
endif()
7067

71-
serialize_lit_param(dbg_include "\"${dbg_include}\"")
72-
serialize_lit_param(fms_runtime_lib "\"${fms_runtime_lib}\"")
73-
serialize_lit_param(cxx_lib "\"${cxx_lib}\"")
68+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS dbg_include "${dbg_include}")
69+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS fms_runtime_lib "${fms_runtime_lib}")
70+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS cxx_lib "${cxx_lib}")
7471
endif()
7572

7673
if (LIBCXX_INCLUDE_TESTS)

libcxxabi/test/CMakeLists.txt

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
include(AddLLVM) # for configure_lit_site_cfg and add_lit_testsuite
2+
include(HandleLitArguments)
23
macro(pythonize_bool var)
34
if (${var})
45
set(${var} True)
@@ -23,39 +24,35 @@ endif()
2324
set(AUTO_GEN_COMMENT "## Autogenerated by libcxxabi configuration.\n# Do not edit!")
2425
set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n")
2526

26-
macro(serialize_lit_param param value)
27-
string(APPEND SERIALIZED_LIT_PARAMS "config.${param} = ${value}\n")
28-
endmacro()
29-
3027
if (LIBCXXABI_EXECUTOR)
3128
message(DEPRECATION "LIBCXXABI_EXECUTOR is deprecated, please add executor=... to LIBCXXABI_TEST_PARAMS")
32-
serialize_lit_param(executor "\"${LIBCXXABI_EXECUTOR}\"")
29+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS executor "${LIBCXXABI_EXECUTOR}")
3330
endif()
3431

3532
if (NOT LIBCXXABI_ENABLE_EXCEPTIONS)
36-
serialize_lit_param(enable_exceptions False)
33+
serialize_lit_param(SERIALIZED_LIT_PARAMS enable_exceptions False)
3734
endif()
3835

3936
if (LIBCXXABI_ENABLE_ASSERTIONS)
40-
serialize_lit_param(enable_assertions True)
37+
serialize_lit_param(SERIALIZED_LIT_PARAMS enable_assertions True)
4138
endif()
4239

43-
serialize_lit_param(enable_experimental False)
40+
serialize_lit_param(SERIALIZED_LIT_PARAMS enable_experimental False)
4441

4542
if (LLVM_USE_SANITIZER)
46-
serialize_lit_param(use_sanitizer "\"${LLVM_USE_SANITIZER}\"")
43+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS use_sanitizer "${LLVM_USE_SANITIZER}")
4744
endif()
4845

4946
if (CMAKE_CXX_COMPILER_TARGET)
50-
serialize_lit_param(target_triple "\"${CMAKE_CXX_COMPILER_TARGET}\"")
47+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${CMAKE_CXX_COMPILER_TARGET}")
5148
else()
52-
serialize_lit_param(target_triple "\"${LLVM_DEFAULT_TARGET_TRIPLE}\"")
49+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${LLVM_DEFAULT_TARGET_TRIPLE}")
5350
endif()
5451

5552
foreach(param IN LISTS LIBCXXABI_TEST_PARAMS)
5653
string(REGEX REPLACE "(.+)=(.+)" "\\1" name "${param}")
5754
string(REGEX REPLACE "(.+)=(.+)" "\\2" value "${param}")
58-
serialize_lit_param("${name}" "\"${value}\"")
55+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS "${name}" "${value}")
5956
endforeach()
6057

6158
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/configs/cmake-bridge.cfg.in"

libunwind/test/CMakeLists.txt

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
include(AddLLVM) # for add_lit_testsuite
2+
include(HandleLitArguments)
23
macro(pythonize_bool var)
34
if (${var})
45
set(${var} True)
@@ -14,31 +15,27 @@ pythonize_bool(LIBUNWIND_USES_ARM_EHABI)
1415
set(AUTO_GEN_COMMENT "## Autogenerated by libunwind configuration.\n# Do not edit!")
1516
set(SERIALIZED_LIT_PARAMS "# Lit parameters serialized here for llvm-lit to pick them up\n")
1617

17-
macro(serialize_lit_param param value)
18-
string(APPEND SERIALIZED_LIT_PARAMS "config.${param} = ${value}\n")
19-
endmacro()
20-
2118
if (LIBUNWIND_EXECUTOR)
2219
message(DEPRECATION "LIBUNWIND_EXECUTOR is deprecated, please add executor=... to LIBUNWIND_TEST_PARAMS")
23-
serialize_lit_param(executor "\"${LIBUNWIND_EXECUTOR}\"")
20+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS executor "${LIBUNWIND_EXECUTOR}")
2421
endif()
2522

26-
serialize_lit_param(enable_experimental False)
23+
serialize_lit_param(SERIALIZED_LIT_PARAMS enable_experimental False)
2724

2825
if (LLVM_USE_SANITIZER)
29-
serialize_lit_param(use_sanitizer "\"${LLVM_USE_SANITIZER}\"")
26+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS use_sanitizer "${LLVM_USE_SANITIZER}")
3027
endif()
3128

3229
if (CMAKE_CXX_COMPILER_TARGET)
33-
serialize_lit_param(target_triple "\"${CMAKE_CXX_COMPILER_TARGET}\"")
30+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${CMAKE_CXX_COMPILER_TARGET}")
3431
else()
35-
serialize_lit_param(target_triple "\"${LLVM_DEFAULT_TARGET_TRIPLE}\"")
32+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS target_triple "${LLVM_DEFAULT_TARGET_TRIPLE}")
3633
endif()
3734

3835
foreach(param IN LISTS LIBUNWIND_TEST_PARAMS)
3936
string(REGEX REPLACE "(.+)=(.+)" "\\1" name "${param}")
4037
string(REGEX REPLACE "(.+)=(.+)" "\\2" value "${param}")
41-
serialize_lit_param("${name}" "\"${value}\"")
38+
serialize_lit_string_param(SERIALIZED_LIT_PARAMS "${name}" "${value}")
4239
endforeach()
4340

4441
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/configs/cmake-bridge.cfg.in"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
macro(serialize_lit_param output_var param value)
3+
string(APPEND ${output_var} "config.${param} = ${value}\n")
4+
endmacro()
5+
6+
macro(serialize_lit_string_param output_var param value)
7+
# Ensure that all quotes in the value are escaped for a valid python string.
8+
string(REPLACE "\"" "\\\"" _escaped_value "${value}")
9+
string(APPEND ${output_var} "config.${param} = \"${_escaped_value}\"\n")
10+
endmacro()

0 commit comments

Comments
 (0)