+macro(add_llvm_loadable_module name)
+ if( NOT LLVM_ON_UNIX OR CYGWIN )
+ message(STATUS "Loadable modules not supported on this platform.
+${name} ignored.")
+ # Add empty "phony" target
+ add_custom_target(${name})
+ else()
+ llvm_process_sources( ALL_FILES ${ARGN} )
+ if (MODULE)
+ set(libkind MODULE)
+ else()
+ set(libkind SHARED)
+ endif()
+
+ add_library( ${name} ${libkind} ${ALL_FILES} )
+ set_target_properties( ${name} PROPERTIES PREFIX "" )
+
+ llvm_config( ${name} ${LLVM_LINK_COMPONENTS} )
+ link_system_libs( ${name} )
+
+ if (APPLE)
+ # Darwin-specific linker flags for loadable modules.
+ set_target_properties(${name} PROPERTIES
+ LINK_FLAGS "-Wl,-flat_namespace -Wl,-undefined -Wl,suppress")
+ endif()
+
+ install(TARGETS ${name}
+ LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+ ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
+ endif()
+
+ set_target_properties(${name} PROPERTIES FOLDER "Loadable modules")
+endmacro(add_llvm_loadable_module name)
+
+