blob: 380379300b099d4d5553440e5633cc1b1ddf2337 [file] [log] [blame]
Jonathan Roelofse9614322015-11-09 16:12:56 +00001option(CLANG_INSTALL_SCANBUILD "Install the scan-build tool" ON)
2
Chris Bieneman0502e982015-11-20 18:49:02 +00003include(GNUInstallDirs)
4
Jonathan Roelofse9614322015-11-09 16:12:56 +00005if (WIN32 AND NOT CYGWIN)
6 set(BinFiles
Jonathan Roelofs7121c002017-03-22 21:13:49 +00007 scan-build
Jonathan Roelofse9614322015-11-09 16:12:56 +00008 scan-build.bat)
9 set(LibexecFiles
Jonathan Roelofs7121c002017-03-22 21:13:49 +000010 ccc-analyzer
11 c++-analyzer
Jonathan Roelofse9614322015-11-09 16:12:56 +000012 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)
Jonathan Roelofs1ff9c632015-11-10 22:48:11 +000021 list(APPEND BinFiles
22 set-xcode-analyzer)
Jonathan Roelofse9614322015-11-09 16:12:56 +000023 endif()
24endif()
25
26set(ManPages
27 scan-build.1)
28
Jonathan Roelofs2ec2acb2015-11-13 00:32:54 +000029set(ShareFiles
Jonathan Roelofse9614322015-11-09 16:12:56 +000030 scanview.css
31 sorttable.js)
32
33
34if(CLANG_INSTALL_SCANBUILD)
35 foreach(BinFile ${BinFiles})
Jonathan Roelofs467ab052015-11-10 22:38:59 +000036 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/${BinFile}
Jonathan Roelofse9614322015-11-09 16:12:56 +000037 COMMAND ${CMAKE_COMMAND} -E make_directory
38 ${CMAKE_BINARY_DIR}/bin
39 COMMAND ${CMAKE_COMMAND} -E copy
Jonathan Roelofs814aa252015-11-13 20:34:15 +000040 ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}
Jonathan Roelofs2a439a12015-11-10 20:01:22 +000041 ${CMAKE_BINARY_DIR}/bin/
Jonathan Roelofs814aa252015-11-13 20:34:15 +000042 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
Jonathan Roelofs1ff9c632015-11-10 22:48:11 +000043 list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
Jonathan Roelofs814aa252015-11-13 20:34:15 +000044 install(PROGRAMS bin/${BinFile} DESTINATION bin)
Jonathan Roelofse9614322015-11-09 16:12:56 +000045 endforeach()
46
47 foreach(LibexecFile ${LibexecFiles})
Jonathan Roelofs467ab052015-11-10 22:38:59 +000048 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libexec/${LibexecFile}
Jonathan Roelofse9614322015-11-09 16:12:56 +000049 COMMAND ${CMAKE_COMMAND} -E make_directory
50 ${CMAKE_BINARY_DIR}/libexec
51 COMMAND ${CMAKE_COMMAND} -E copy
Jonathan Roelofs814aa252015-11-13 20:34:15 +000052 ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile}
Jonathan Roelofs2a439a12015-11-10 20:01:22 +000053 ${CMAKE_BINARY_DIR}/libexec/
Jonathan Roelofs814aa252015-11-13 20:34:15 +000054 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile})
Jonathan Roelofs1ff9c632015-11-10 22:48:11 +000055 list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile})
Jonathan Roelofs814aa252015-11-13 20:34:15 +000056 install(PROGRAMS libexec/${LibexecFile} DESTINATION libexec)
Jonathan Roelofse9614322015-11-09 16:12:56 +000057 endforeach()
58
59 foreach(ManPage ${ManPages})
Chris Bieneman0502e982015-11-20 18:49:02 +000060 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/${ManPage}
Jonathan Roelofse9614322015-11-09 16:12:56 +000061 COMMAND ${CMAKE_COMMAND} -E make_directory
Chris Bieneman0502e982015-11-20 18:49:02 +000062 ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1
Jonathan Roelofse9614322015-11-09 16:12:56 +000063 COMMAND ${CMAKE_COMMAND} -E copy
Jonathan Roelofs814aa252015-11-13 20:34:15 +000064 ${CMAKE_CURRENT_SOURCE_DIR}/man/${ManPage}
Chris Bieneman0502e982015-11-20 18:49:02 +000065 ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/
Jonathan Roelofs814aa252015-11-13 20:34:15 +000066 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/man/${ManPage})
Chris Bieneman0502e982015-11-20 18:49:02 +000067 list(APPEND Depends ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/${ManPage})
68 install(PROGRAMS man/${ManPage} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
Jonathan Roelofse9614322015-11-09 16:12:56 +000069 endforeach()
70
Jonathan Roelofs2ec2acb2015-11-13 00:32:54 +000071 foreach(ShareFile ${ShareFiles})
Jonathan Roelofs80df3d22015-11-13 19:56:07 +000072 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile}
Jonathan Roelofse9614322015-11-09 16:12:56 +000073 COMMAND ${CMAKE_COMMAND} -E make_directory
Jonathan Roelofs80df3d22015-11-13 19:56:07 +000074 ${CMAKE_BINARY_DIR}/share/scan-build
Jonathan Roelofse9614322015-11-09 16:12:56 +000075 COMMAND ${CMAKE_COMMAND} -E copy
Jonathan Roelofs814aa252015-11-13 20:34:15 +000076 ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile}
Jonathan Roelofs80df3d22015-11-13 19:56:07 +000077 ${CMAKE_BINARY_DIR}/share/scan-build/
Jonathan Roelofs814aa252015-11-13 20:34:15 +000078 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile})
Jonathan Roelofs80df3d22015-11-13 19:56:07 +000079 list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile})
Jonathan Roelofs814aa252015-11-13 20:34:15 +000080 install(FILES share/scan-build/${ShareFile} DESTINATION share/scan-build)
Jonathan Roelofse9614322015-11-09 16:12:56 +000081 endforeach()
Jonathan Roelofs467ab052015-11-10 22:38:59 +000082
83 add_custom_target(scan-build ALL DEPENDS ${Depends})
Aaron Ballman8f3f6342015-11-11 18:13:42 +000084 set_target_properties(scan-build PROPERTIES FOLDER "Misc")
Jonathan Roelofse9614322015-11-09 16:12:56 +000085endif()