From: Jonathan Roelofs Date: Fri, 13 Nov 2015 20:34:15 +0000 (+0000) Subject: [scan-build] Make scan-build work whether it's installed or not X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8dbb02332869e073fd71585f829be356d1495a80;p=clang [scan-build] Make scan-build work whether it's installed or not git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@253074 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/scan-build/CMakeLists.txt b/tools/scan-build/CMakeLists.txt index 95ab5f73b5..ec7b8ad0ae 100644 --- a/tools/scan-build/CMakeLists.txt +++ b/tools/scan-build/CMakeLists.txt @@ -32,11 +32,11 @@ if(CLANG_INSTALL_SCANBUILD) COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/bin COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/${BinFile} + ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile} ${CMAKE_BINARY_DIR}/bin/ - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${BinFile}) + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}) list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile}) - install(PROGRAMS ${BinFile} DESTINATION bin) + install(PROGRAMS bin/${BinFile} DESTINATION bin) endforeach() foreach(LibexecFile ${LibexecFiles}) @@ -44,11 +44,11 @@ if(CLANG_INSTALL_SCANBUILD) COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/libexec COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/${LibexecFile} + ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile} ${CMAKE_BINARY_DIR}/libexec/ - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${LibexecFile}) + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile}) list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile}) - install(PROGRAMS ${LibexecFile} DESTINATION libexec) + install(PROGRAMS libexec/${LibexecFile} DESTINATION libexec) endforeach() foreach(ManPage ${ManPages}) @@ -56,11 +56,11 @@ if(CLANG_INSTALL_SCANBUILD) COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/share/man/man1 COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/${ManPage} + ${CMAKE_CURRENT_SOURCE_DIR}/man/${ManPage} ${CMAKE_BINARY_DIR}/share/man/man1/ - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${ManPage}) + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/man/${ManPage}) list(APPEND Depends ${CMAKE_BINARY_DIR}/share/man/man1/${ManPage}) - install(PROGRAMS ${ManPage} DESTINATION share/man/man1) + install(PROGRAMS man/${ManPage} DESTINATION share/man/man1) endforeach() foreach(ShareFile ${ShareFiles}) @@ -68,11 +68,11 @@ if(CLANG_INSTALL_SCANBUILD) COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/share/scan-build COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile} + ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile} ${CMAKE_BINARY_DIR}/share/scan-build/ - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile}) + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile}) list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile}) - install(FILES share/${ShareFile} DESTINATION share/scan-build) + install(FILES share/scan-build/${ShareFile} DESTINATION share/scan-build) endforeach() add_custom_target(scan-build ALL DEPENDS ${Depends}) diff --git a/tools/scan-build/Makefile b/tools/scan-build/Makefile index a9e072aa3c..4ee949346f 100644 --- a/tools/scan-build/Makefile +++ b/tools/scan-build/Makefile @@ -33,18 +33,18 @@ endif all:: $(InstallTargets) -$(ToolDir)/%: % Makefile $(ToolDir)/.dir +$(ToolDir)/%: bin/% Makefile $(ToolDir)/.dir $(Echo) "Copying $(notdir $<) to the 'bin' directory..." $(Verb)cp $< $@ $(Verb)chmod +x $@ -$(LibexecDir)/%: % Makefile $(LibexecDir)/.dir +$(LibexecDir)/%: libexec/% Makefile $(LibexecDir)/.dir $(Echo) "Copying $(notdir $<) to the 'libexec' directory..." $(Verb)cp $< $@ $(Verb)chmod +x $@ -$(ShareDir)/man/man1/%: % Makefile $(ShareDir)/man/man1/.dir - $(Echo) "Copying $(notdir $<) to the 'share' directory..." +$(ShareDir)/man/man1/%: man/% Makefile $(ShareDir)/man/man1/.dir + $(Echo) "Copying $(notdir $<) to the 'man' directory..." $(Verb)cp $< $@ $(ShareDir)/scan-build/%: share/% Makefile $(ShareDir)/scan-build/.dir diff --git a/tools/scan-build/scan-build b/tools/scan-build/bin/scan-build similarity index 99% rename from tools/scan-build/scan-build rename to tools/scan-build/bin/scan-build index f37b412498..6a14484970 100755 --- a/tools/scan-build/scan-build +++ b/tools/scan-build/bin/scan-build @@ -1818,6 +1818,7 @@ if (defined $Options{OutputFormat}) { Diag "Viewing analysis results in '$Options{OutputDir}' using scan-view.\n"; my $ScanView = Cwd::realpath("$RealBin/scan-view"); if (! -x $ScanView) { $ScanView = "scan-view"; } + if (! -x $ScanView) { $ScanView = Cwd::realpath("$RealBin/../../scan-view/bin/scan-view"); } exec $ScanView, "$Options{OutputDir}"; } diff --git a/tools/scan-build/scan-build.bat b/tools/scan-build/bin/scan-build.bat similarity index 100% rename from tools/scan-build/scan-build.bat rename to tools/scan-build/bin/scan-build.bat diff --git a/tools/scan-build/set-xcode-analyzer b/tools/scan-build/bin/set-xcode-analyzer similarity index 100% rename from tools/scan-build/set-xcode-analyzer rename to tools/scan-build/bin/set-xcode-analyzer diff --git a/tools/scan-build/c++-analyzer b/tools/scan-build/libexec/c++-analyzer similarity index 100% rename from tools/scan-build/c++-analyzer rename to tools/scan-build/libexec/c++-analyzer diff --git a/tools/scan-build/c++-analyzer.bat b/tools/scan-build/libexec/c++-analyzer.bat similarity index 100% rename from tools/scan-build/c++-analyzer.bat rename to tools/scan-build/libexec/c++-analyzer.bat diff --git a/tools/scan-build/ccc-analyzer b/tools/scan-build/libexec/ccc-analyzer similarity index 100% rename from tools/scan-build/ccc-analyzer rename to tools/scan-build/libexec/ccc-analyzer diff --git a/tools/scan-build/ccc-analyzer.bat b/tools/scan-build/libexec/ccc-analyzer.bat similarity index 100% rename from tools/scan-build/ccc-analyzer.bat rename to tools/scan-build/libexec/ccc-analyzer.bat diff --git a/tools/scan-build/scan-build.1 b/tools/scan-build/man/scan-build.1 similarity index 100% rename from tools/scan-build/scan-build.1 rename to tools/scan-build/man/scan-build.1 diff --git a/tools/scan-build/share/scanview.css b/tools/scan-build/share/scan-build/scanview.css similarity index 100% rename from tools/scan-build/share/scanview.css rename to tools/scan-build/share/scan-build/scanview.css diff --git a/tools/scan-build/share/sorttable.js b/tools/scan-build/share/scan-build/sorttable.js similarity index 100% rename from tools/scan-build/share/sorttable.js rename to tools/scan-build/share/scan-build/sorttable.js diff --git a/tools/scan-view/CMakeLists.txt b/tools/scan-view/CMakeLists.txt index 969d519d8a..b305ca562a 100644 --- a/tools/scan-view/CMakeLists.txt +++ b/tools/scan-view/CMakeLists.txt @@ -17,11 +17,11 @@ if(CLANG_INSTALL_SCANVIEW) COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/bin COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/${BinFile} + ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile} ${CMAKE_BINARY_DIR}/bin/ - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${BinFile}) + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}) list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile}) - install(PROGRAMS ${BinFile} DESTINATION bin) + install(PROGRAMS bin/${BinFile} DESTINATION bin) endforeach() foreach(ShareFile ${ShareFiles}) diff --git a/tools/scan-view/Makefile b/tools/scan-view/Makefile index e980b38217..37e4404d6f 100644 --- a/tools/scan-view/Makefile +++ b/tools/scan-view/Makefile @@ -26,7 +26,7 @@ endif all:: $(InstallTargets) -$(ToolDir)/%: % Makefile $(ToolDir)/.dir +$(ToolDir)/%: bin/% Makefile $(ToolDir)/.dir $(Echo) "Copying $(notdir $<) to the 'bin' directory..." $(Verb)cp $< $@ $(Verb)chmod +x $@ diff --git a/tools/scan-view/scan-view b/tools/scan-view/bin/scan-view similarity index 93% rename from tools/scan-view/scan-view rename to tools/scan-view/bin/scan-view index 797db637ae..94b60e6301 100755 --- a/tools/scan-view/scan-view +++ b/tools/scan-view/bin/scan-view @@ -56,7 +56,13 @@ def start_browser(port, options): webbrowser.open(url) def run(port, options, root): - sys.path.append(os.path.dirname(__file__) + "/../share/scan-view") + # Prefer to look relative to the installed binary + share = os.path.dirname(__file__) + "/../share/scan-view" + if not os.path.isdir(share): + # Otherwise look relative to the source + share = os.path.dirname(__file__) + "/../../scan-view/share" + sys.path.append(share) + import ScanView try: print 'Starting scan-view at: http://%s:%d'%(options.host,