Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: tools/clang/plugins/CMakeLists.txt

Issue 1124763003: Update from https://crrev.com/327068 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: update nacl, buildtools, fix display_change_notifier_unittest Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()

Powered by Google App Engine
This is Rietveld 408576698