[PATCH] D20261: [compiler-rt] Fix multi-configuration output paths

Etienne Bergeron via llvm-commits llvm-commits at lists.llvm.org
Sun May 15 17:19:12 PDT 2016


etienneb added a comment.

I've fixed a few other cases to obtain a full working compilation with Visual Studio (multi-configuration).

The temporary files produced by the custom rules (clang_compile) do not contain the configuration (Debug/Release). To avoid names collision between configurations, this patch is adding the configuration to the path of the produced object files.

  $ find . -name "*.o"
  ./compiler-rt/lib/asan/tests/Release/ASAN_BENCHMARKS_OBJECTS.asan_benchmarks_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_BENCHMARKS_OBJECTS.asan_benchmarks_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_BENCHMARKS_OBJECTS.gtest-all.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_BENCHMARKS_OBJECTS.gtest-all.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_asm_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_asm_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_globals_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_globals_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_interface_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_interface_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_mem_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_mem_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_oob_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_oob_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_str_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_str_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_test_main.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.asan_test_main.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.gtest-all.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_INST_TEST_OBJECTS.gtest-all.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_NOINST_TEST_OBJECTS.asan_fake_stack_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_NOINST_TEST_OBJECTS.asan_fake_stack_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_NOINST_TEST_OBJECTS.asan_noinst_test.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_NOINST_TEST_OBJECTS.asan_noinst_test.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_NOINST_TEST_OBJECTS.asan_test_main.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_NOINST_TEST_OBJECTS.asan_test_main.cc.i386-with-calls.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_NOINST_TEST_OBJECTS.gtest-all.cc.i386-inline.o
  ./compiler-rt/lib/asan/tests/Release/ASAN_NOINST_TEST_OBJECTS.gtest-all.cc.i386-with-calls.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/gtest-all.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_allocator_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_atomic_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_bitvector_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_bvgraph_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_common_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_deadlock_detector_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_flags_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_format_interceptor_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_ioctl_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_libc_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_linux_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_list_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_mutex_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_nolibc_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_posix_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_printf_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_procmaps_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_stackdepot_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_stacktrace_printer_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_stacktrace_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_stoptheworld_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_suppressions_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_symbolizer_test.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_test_main.cc.i386.o
  ./compiler-rt/lib/sanitizer_common/tests/Release/sanitizer_thread_registry_test.cc.i386.o

The same problem was happening with the libraries:

  $ find . -name "*.lib"
  ./compiler-rt/lib/asan/RTAsan.i386.dir/Release/RTAsan.i386.lib
  ./compiler-rt/lib/asan/RTAsan_cxx.i386.dir/Release/RTAsan_cxx.i386.lib
  ./compiler-rt/lib/asan/RTAsan_dynamic.i386.dir/Release/RTAsan_dynamic.i386.lib
  ./compiler-rt/lib/asan/RTAsan_dynamic_version_script_dummy.i386.dir/Release/RTAsan_dynamic_version_script_dummy.i386.lib
  ./compiler-rt/lib/asan/RTAsan_preinit.i386.dir/Release/RTAsan_preinit.i386.lib
  ./compiler-rt/lib/asan/tests/default/Release/Asan-i386-inline-Benchmark.lib
  ./compiler-rt/lib/asan/tests/default/Release/Asan-i386-inline-Noinst-Test.lib
  ./compiler-rt/lib/asan/tests/default/Release/Asan-i386-inline-Test.lib
  ./compiler-rt/lib/asan/tests/default/Release/Asan-i386-with-calls-Benchmark.lib
  ./compiler-rt/lib/asan/tests/default/Release/Asan-i386-with-calls-Noinst-Test.lib
  ./compiler-rt/lib/asan/tests/default/Release/Asan-i386-with-calls-Test.lib
  ./compiler-rt/lib/asan/tests/dynamic/Release/Asan-i386-inline-Dynamic-Test.lib
  ./compiler-rt/lib/asan/tests/dynamic/Release/Asan-i386-with-calls-Dynamic-Test.lib
  ./compiler-rt/lib/asan/tests/Release/RTAsanTest.i386-inline.lib
  ./compiler-rt/lib/asan/tests/Release/RTAsanTest.i386-with-calls.lib
  ./compiler-rt/lib/interception/RTInterception.i386.dir/Release/RTInterception.i386.lib
  ./compiler-rt/lib/lsan/RTLSanCommon.i386.dir/Release/RTLSanCommon.i386.lib
  ./compiler-rt/lib/sanitizer_common/RTSanitizerCommon.i386.dir/Release/RTSanitizerCommon.i386.lib
  ./compiler-rt/lib/sanitizer_common/RTSanitizerCommonLibc.i386.dir/Release/RTSanitizerCommonLibc.i386.lib
  ./compiler-rt/lib/sanitizer_common/RTSanitizerCommonNoLibc.i386.dir/Release/RTSanitizerCommonNoLibc.i386.lib
  ./compiler-rt/lib/sanitizer_common/tests/Release/RTSanitizerCommon.test.i386.lib
  ./compiler-rt/lib/sanitizer_common/tests/Release/Sanitizer-i386-Test.lib
  ./compiler-rt/lib/ubsan/RTUbsan.i386.dir/Release/RTUbsan.i386.lib
  ./compiler-rt/lib/ubsan/RTUbsan_cxx.i386.dir/Release/RTUbsan_cxx.i386.lib
  ./compiler-rt/lib/ubsan/RTUbsan_standalone.i386.dir/Release/RTUbsan_standalone.i386.lib


http://reviews.llvm.org/D20261





More information about the llvm-commits mailing list