| Index: tools/clang/blink_gc_plugin/CMakeLists.txt
|
| diff --git a/tools/clang/blink_gc_plugin/CMakeLists.txt b/tools/clang/blink_gc_plugin/CMakeLists.txt
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..560bd0fd751055a60dd553e1a7a94eeb719057cd
|
| --- /dev/null
|
| +++ b/tools/clang/blink_gc_plugin/CMakeLists.txt
|
| @@ -0,0 +1,49 @@
|
| +set(LIBRARYNAME BlinkGCPlugin)
|
| +
|
| +set(plugin_sources
|
| + BlinkGCPlugin.cpp
|
| + BlinkGCPluginConsumer.cpp
|
| + CheckDispatchVisitor.cpp
|
| + CheckFieldsVisitor.cpp
|
| + CheckFinalizerVisitor.cpp
|
| + CheckGCRootsVisitor.cpp
|
| + CheckTraceVisitor.cpp
|
| + CollectVisitor.cpp
|
| + Config.cpp
|
| + Edge.cpp
|
| + RecordInfo.cpp)
|
| +
|
| +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})
|
| +
|
| + cr_add_test(blink_gc_plugin_test
|
| + python
|
| + ${CMAKE_CURRENT_SOURCE_DIR}/tests/test.py
|
| + ${CMAKE_BINARY_DIR}/bin/clang
|
| + )
|
| +else()
|
| + add_llvm_loadable_module("lib${LIBRARYNAME}" ${plugin_sources})
|
| + add_dependencies("lib${LIBRARYNAME}" clang)
|
| +
|
| + cr_install(TARGETS "lib${LIBRARYNAME}" LIBRARY DESTINATION lib)
|
| +
|
| + cr_add_test(blink_gc_plugin_test
|
| + python
|
| + ${CMAKE_CURRENT_SOURCE_DIR}/tests/test.py
|
| + ${CMAKE_BINARY_DIR}/bin/clang
|
| + $<TARGET_FILE:lib${LIBRARYNAME}>
|
| + )
|
| +endif()
|
|
|