Home | History | Annotate | Download | only in blink_gc_plugin
      1 set(LIBRARYNAME BlinkGCPlugin)
      2 
      3 set(plugin_sources
      4   BadPatternFinder.cpp
      5   BlinkGCPlugin.cpp
      6   BlinkGCPluginConsumer.cpp
      7   CheckDispatchVisitor.cpp
      8   CheckFieldsVisitor.cpp
      9   CheckFinalizerVisitor.cpp
     10   CheckGCRootsVisitor.cpp
     11   CheckTraceVisitor.cpp
     12   CollectVisitor.cpp
     13   Config.cpp
     14   DiagnosticsReporter.cpp
     15   Edge.cpp
     16   RecordInfo.cpp)
     17 
     18 if(WIN32)
     19   # Clang doesn't support loadable modules on Windows. Unfortunately, building
     20   # the plugin as a static library and linking clang against it doesn't work.
     21   # Since clang doesn't reference any symbols in our static library, the linker
     22   # strips it out completely.
     23   # Instead, we rely on the fact that the SOURCES property of a target is no
     24   # read-only after CMake 3.1 and use it to compile the plugin directly into
     25   # clang...
     26   cmake_minimum_required(VERSION 3.1)
     27   # Paths must be absolute, since we're modifying a target in another directory.
     28   set(absolute_sources "")
     29   foreach(source ${plugin_sources})
     30     list(APPEND absolute_sources ${CMAKE_CURRENT_SOURCE_DIR}/${source})
     31   endforeach()
     32   set_property(TARGET clang APPEND PROPERTY SOURCES ${absolute_sources})
     33 
     34   cr_add_test(blink_gc_plugin_test
     35     python tests/test.py
     36     ${CMAKE_BINARY_DIR}/bin/clang
     37     )
     38 else()
     39   add_llvm_loadable_module("lib${LIBRARYNAME}" ${plugin_sources})
     40   add_dependencies("lib${LIBRARYNAME}" clang)
     41 
     42   cr_install(TARGETS "lib${LIBRARYNAME}" LIBRARY DESTINATION lib)
     43 
     44   cr_add_test(blink_gc_plugin_test
     45     python tests/test.py
     46     ${CMAKE_BINARY_DIR}/bin/clang
     47     $<TARGET_FILE:lib${LIBRARYNAME}>
     48     )
     49 endif()
     50