diff --git a/libcxx/test/CMakeLists.txt b/libcxx/test/CMakeLists.txt --- a/libcxx/test/CMakeLists.txt +++ b/libcxx/test/CMakeLists.txt @@ -46,6 +46,31 @@ message(FATAL_ERROR "Expected LIBCXX_TEST_DEPS to be defined") endif() +if (MSVC) + # Shared code for initializing some parameters used by all + # llvm-libc++-*-clangcl.cfg.in test configs. + set(dbg_include "") + + if (NOT CMAKE_MSVC_RUNTIME_LIBRARY OR CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "DLL$") + set(fms_runtime_lib "dll") + set(cxx_lib "msvcprt") + else() + set(fms_runtime_lib "static") + set(cxx_lib "libcpmt") + endif() + + if ((NOT CMAKE_MSVC_RUNTIME_LIBRARY AND uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG") + OR (CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "Debug")) + set(dbg_include " -include set_windows_crt_report_mode.h") + set(fms_runtime_lib "${fms_runtime_lib}_dbg") + set(cxx_lib "${cxx_lib}d") + endif() + + serialize_lit_param(dbg_include "\"${dbg_include}\"") + serialize_lit_param(fms_runtime_lib "\"${fms_runtime_lib}\"") + serialize_lit_param(cxx_lib "\"${cxx_lib}\"") +endif() + if (LIBCXX_INCLUDE_TESTS) include(AddLLVM) # for configure_lit_site_cfg and add_lit_testsuite diff --git a/libcxx/test/configs/llvm-libc++-shared-clangcl.cfg.in b/libcxx/test/configs/llvm-libc++-shared-clangcl.cfg.in --- a/libcxx/test/configs/llvm-libc++-shared-clangcl.cfg.in +++ b/libcxx/test/configs/llvm-libc++-shared-clangcl.cfg.in @@ -3,27 +3,12 @@ lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg') -dbg_include = '' -runtime_library = '@CMAKE_MSVC_RUNTIME_LIBRARY@' - -if runtime_library == '' or runtime_library.endswith('DLL'): - fms_runtime_lib = 'dll' - cxx_lib = 'msvcprt' -else: - fms_runtime_lib = 'static' - cxx_lib = 'libcpmt' - -if (runtime_library == '' and '@uppercase_CMAKE_BUILD_TYPE@' == 'DEBUG') or 'Debug' in runtime_library: - dbg_include = ' -include set_windows_crt_report_mode.h' - fms_runtime_lib += '_dbg' - cxx_lib += 'd' - config.substitutions.append(('%{flags}', '--driver-mode=g++')) config.substitutions.append(('%{compile_flags}', - '-fms-runtime-lib=' + fms_runtime_lib + ' -nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX' + dbg_include + '-fms-runtime-lib=' + config.fms_runtime_lib + ' -nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX' + config.dbg_include )) config.substitutions.append(('%{link_flags}', - '-nostdlib -L %{lib} -lc++ -l' + cxx_lib + '-nostdlib -L %{lib} -lc++ -l' + config.cxx_lib )) config.substitutions.append(('%{exec}', '%{executor} --execdir %T --prepend_env PATH=%{lib} -- ' diff --git a/libcxx/test/configs/llvm-libc++-shared-no-vcruntime-clangcl.cfg.in b/libcxx/test/configs/llvm-libc++-shared-no-vcruntime-clangcl.cfg.in --- a/libcxx/test/configs/llvm-libc++-shared-no-vcruntime-clangcl.cfg.in +++ b/libcxx/test/configs/llvm-libc++-shared-no-vcruntime-clangcl.cfg.in @@ -4,27 +4,12 @@ lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg') -dbg_include = '' -runtime_library = '@CMAKE_MSVC_RUNTIME_LIBRARY@' - -if runtime_library == '' or runtime_library.endswith('DLL'): - fms_runtime_lib = 'dll' - cxx_lib = 'msvcprt' -else: - fms_runtime_lib = 'static' - cxx_lib = 'libcpmt' - -if (runtime_library == '' and '@uppercase_CMAKE_BUILD_TYPE@' == 'DEBUG') or 'Debug' in runtime_library: - dbg_include = ' -include set_windows_crt_report_mode.h' - fms_runtime_lib += '_dbg' - cxx_lib += 'd' - config.substitutions.append(('%{flags}', '--driver-mode=g++')) config.substitutions.append(('%{compile_flags}', - '-fms-runtime-lib=' + fms_runtime_lib + ' -nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX -D_HAS_EXCEPTIONS=0' + dbg_include + '-fms-runtime-lib=' + config.fms_runtime_lib + ' -nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX -D_HAS_EXCEPTIONS=0' + config.dbg_include )) config.substitutions.append(('%{link_flags}', - '-nostdlib -L %{lib} -lc++ -l' + cxx_lib + '-nostdlib -L %{lib} -lc++ -l' + config.cxx_lib )) config.substitutions.append(('%{exec}', '%{executor} --execdir %T --prepend_env PATH=%{lib} -- ' diff --git a/libcxx/test/configs/llvm-libc++-static-clangcl.cfg.in b/libcxx/test/configs/llvm-libc++-static-clangcl.cfg.in --- a/libcxx/test/configs/llvm-libc++-static-clangcl.cfg.in +++ b/libcxx/test/configs/llvm-libc++-static-clangcl.cfg.in @@ -3,27 +3,12 @@ lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg') -dbg_include = '' -runtime_library = '@CMAKE_MSVC_RUNTIME_LIBRARY@' - -if runtime_library == '' or runtime_library.endswith('DLL'): - fms_runtime_lib = 'dll' - cxx_lib = 'msvcprt' -else: - fms_runtime_lib = 'static' - cxx_lib = 'libcpmt' - -if (runtime_library == '' and '@uppercase_CMAKE_BUILD_TYPE@' == 'DEBUG') or 'Debug' in runtime_library: - dbg_include = ' -include set_windows_crt_report_mode.h' - fms_runtime_lib += '_dbg' - cxx_lib += 'd' - config.substitutions.append(('%{flags}', '--driver-mode=g++')) config.substitutions.append(('%{compile_flags}', - '-fms-runtime-lib=' + fms_runtime_lib + ' -nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX' + dbg_include + '-fms-runtime-lib=' + config.fms_runtime_lib + ' -nostdinc++ -I %{include} -I %{target-include} -I %{libcxx}/test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX' + config.dbg_include )) config.substitutions.append(('%{link_flags}', - '-nostdlib -L %{lib} -llibc++ -l' + cxx_lib + '-nostdlib -L %{lib} -llibc++ -l' + config.cxx_lib )) config.substitutions.append(('%{exec}', '%{executor} --execdir %T -- '