1option(CLANG_INSTALL_SCANBUILD "Install the scan-build tool" ON) 2 3include(GNUInstallDirs) 4 5if (WIN32 AND NOT CYGWIN) 6 set(BinFiles 7 scan-build 8 scan-build.bat) 9 set(LibexecFiles 10 ccc-analyzer 11 c++-analyzer 12 ccc-analyzer.bat 13 c++-analyzer.bat) 14else() 15 set(BinFiles 16 scan-build) 17 set(LibexecFiles 18 ccc-analyzer 19 c++-analyzer) 20 if (APPLE) 21 list(APPEND BinFiles 22 set-xcode-analyzer) 23 endif() 24endif() 25 26set(ManPages 27 scan-build.1) 28 29set(ShareFiles 30 scanview.css 31 sorttable.js) 32 33 34if(CLANG_INSTALL_SCANBUILD) 35 foreach(BinFile ${BinFiles}) 36 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/${BinFile} 37 COMMAND ${CMAKE_COMMAND} -E make_directory 38 ${CMAKE_BINARY_DIR}/bin 39 COMMAND ${CMAKE_COMMAND} -E copy 40 ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile} 41 ${CMAKE_BINARY_DIR}/bin/ 42 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}) 43 list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile}) 44 install(PROGRAMS bin/${BinFile} 45 DESTINATION bin 46 COMPONENT scan-build) 47 endforeach() 48 49 foreach(LibexecFile ${LibexecFiles}) 50 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libexec/${LibexecFile} 51 COMMAND ${CMAKE_COMMAND} -E make_directory 52 ${CMAKE_BINARY_DIR}/libexec 53 COMMAND ${CMAKE_COMMAND} -E copy 54 ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile} 55 ${CMAKE_BINARY_DIR}/libexec/ 56 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile}) 57 list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile}) 58 install(PROGRAMS libexec/${LibexecFile} 59 DESTINATION libexec 60 COMPONENT scan-build) 61 endforeach() 62 63 foreach(ManPage ${ManPages}) 64 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/${ManPage} 65 COMMAND ${CMAKE_COMMAND} -E make_directory 66 ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1 67 COMMAND ${CMAKE_COMMAND} -E copy 68 ${CMAKE_CURRENT_SOURCE_DIR}/man/${ManPage} 69 ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/ 70 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/man/${ManPage}) 71 list(APPEND Depends ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/${ManPage}) 72 install(PROGRAMS man/${ManPage} 73 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 74 COMPONENT scan-build) 75 endforeach() 76 77 foreach(ShareFile ${ShareFiles}) 78 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile} 79 COMMAND ${CMAKE_COMMAND} -E make_directory 80 ${CMAKE_BINARY_DIR}/share/scan-build 81 COMMAND ${CMAKE_COMMAND} -E copy 82 ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile} 83 ${CMAKE_BINARY_DIR}/share/scan-build/ 84 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile}) 85 list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile}) 86 install(FILES share/scan-build/${ShareFile} 87 DESTINATION share/scan-build 88 COMPONENT scan-build) 89 endforeach() 90 91 add_custom_target(scan-build ALL DEPENDS ${Depends}) 92 set_target_properties(scan-build PROPERTIES FOLDER "Misc") 93 94 if(NOT LLVM_ENABLE_IDE) 95 add_llvm_install_targets("install-scan-build" 96 DEPENDS scan-build 97 COMPONENT scan-build) 98 endif() 99endif() 100