| Index: tools/clang/plugins/CMakeLists.txt
|
| diff --git a/tools/clang/plugins/CMakeLists.txt b/tools/clang/plugins/CMakeLists.txt
|
| index d17de19fcd09d79a5a41860469a9dd97a557f29a..e4eea86c7bf1f1675310cd1bb97678fd7b0e8a1b 100644
|
| --- a/tools/clang/plugins/CMakeLists.txt
|
| +++ b/tools/clang/plugins/CMakeLists.txt
|
| @@ -1,15 +1,33 @@
|
| -add_llvm_loadable_module(libFindBadConstructs
|
| - ChromeClassTester.cpp
|
| - FindBadConstructsAction.cpp
|
| - FindBadConstructsConsumer.cpp
|
| - )
|
| +set(plugin_sources
|
| + ChromeClassTester.cpp
|
| + FindBadConstructsAction.cpp
|
| + FindBadConstructsConsumer.cpp)
|
|
|
| -add_dependencies(libFindBadConstructs clang)
|
| +if(WIN32)
|
| + # Clang doesn't support loadable modules on Windows. Unfortunately, building
|
| + # the plugin as a static library and linking clang against it doesn't work.
|
| + # Since clang doesn't reference any symbols in our static library, the linker
|
| + # strips it out completely.
|
| + # Instead, we rely on the fact that the SOURCES property of a target is no
|
| + # read-only after CMake 3.1 and use it to compile the plugin directly into
|
| + # clang...
|
| + cmake_minimum_required(VERSION 3.1)
|
| + # Paths must be absolute, since we're modifying a target in another directory.
|
| + set(absolute_sources "")
|
| + foreach(source ${plugin_sources})
|
| + list(APPEND absolute_sources ${CMAKE_CURRENT_SOURCE_DIR}/${source})
|
| + endforeach()
|
| + set_property(TARGET clang APPEND PROPERTY SOURCES ${absolute_sources})
|
| +else()
|
| + add_llvm_loadable_module(libFindBadConstructs ${plugin_sources})
|
| + add_dependencies(libFindBadConstructs clang)
|
|
|
| -cr_install(TARGETS libFindBadConstructs LIBRARY DESTINATION lib)
|
| + cr_install(TARGETS libFindBadConstructs LIBRARY DESTINATION lib)
|
|
|
| -cr_add_test(plugins_test
|
| - ${CMAKE_CURRENT_SOURCE_DIR}/tests/test.sh
|
| - ${CMAKE_BINARY_DIR}/bin/clang
|
| - $<TARGET_FILE:libFindBadConstructs>
|
| - )
|
| + # TODO(dcheng): Rewrite the test framework so it works on Windows too.
|
| + cr_add_test(plugins_test
|
| + ${CMAKE_CURRENT_SOURCE_DIR}/tests/test.sh
|
| + ${CMAKE_BINARY_DIR}/bin/clang
|
| + $<TARGET_FILE:libFindBadConstructs>
|
| + )
|
| +endif()
|
|
|