Subject: [PATCH] gnu: Add cscope

From: Foo Chuan Wei <[email-masked]>
Date: Wed, 13 Oct 2021 14:42:41 +0000

* gnu/packages/code.scm (cscope): New variable.
---
 gnu/packages/code.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 7551b31e85..ce30946874 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -936,3 +936,43 @@ extensions over the standard utility.")
       (description "amalgamate.py aims to make it easy to use SQLite-style C
 source and header amalgamation in projects.")
       (license license:bsd-3))))
+
+(define-public cscope
+  (package
+    (name "cscope")
+    (version "15.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/cscope/cscope/"
+                                  "v" version "/cscope-" version ".tar.gz"))
+              (sha256
+                (base32
+                  "0ngiv4aj3rr35k3q3wjx0y19gh7i1ydqa0cqip6sjwd8fph5ll65"))))
+    (build-system gnu-build-system)
+    (inputs `(("ncurses" ,ncurses)))
+    (arguments `(#:configure-flags
+                 ;; Specify the correct ncurses directory to prevent incorrect
+                 ;; fallback on SysV curses.
+                 (list (string-append "--with-ncurses="
+                                      (assoc-ref %build-inputs "ncurses")))))
+    (home-page "http://cscope.sourceforge.net")
+    (synopsis "Tool for browsing source code")
+    (description
+      "Cscope is a text screen based source browsing tool. Although it is
+primarily designed to search C code (including lex and yacc files), it can also
+be used for C++ code.
+
+Using cscope, you can easily search for where symbols are used and defined.
+Cscope is designed to answer questions like:
+
+@itemize
+@item Where is this variable used?
+@item What is the value of this preprocessor symbol?
+@item Where is this function in the source files?
+@item What functions call this function?
+@item What functions are called by this function?
+@item Where does the message \"out of space\" come from?
+@item Where is this source file in the directory structure?
+@item What files include this header file?
+@end itemize")
+    (license license:bsd-3)))

base-commit: ac60f71215dbb327d3581b2a31b88de5a87abd06
-- 
2.25.1