From a0adb5f403a8a03ca2ce9ecbfecd875958cbd539 Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 20 May 2022 04:06:06 +0000 Subject: gnu: Add cdecl. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/code.scm (cdecl): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/code.scm | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index e96a55e5b0..437c735c79 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2020, 2021 Marius Bakke ;;; Copyright © 2020 Julien Lepiller ;;; Copyright © 2021 lu hui -;;; Copyright © 2021 Foo Chuan Wei +;;; Copyright © 2021, 2022 Foo Chuan Wei ;;; ;;; This file is part of GNU Guix. ;;; @@ -48,12 +48,14 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages bison) #:use-module (gnu packages c) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages curl) #:use-module (gnu packages elf) #:use-module (gnu packages emacs) + #:use-module (gnu packages flex) #:use-module (gnu packages gcc) #:use-module (gnu packages graphviz) #:use-module (gnu packages llvm) @@ -66,6 +68,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages readline) #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) #:use-module (gnu packages texinfo) @@ -925,6 +928,88 @@ extensions over the standard utility.") source and header amalgamation in projects.") (license license:bsd-3)))) +(define-public cdecl + (package + (name "cdecl") + (version "2.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.ibiblio.org/pub/linux/devel/lang/c/cdecl-" + version ".tar.gz")) + (sha256 + (base32 "0dm98bp186r4cihli6fmcwzjaadgwl1z3b0zdxfik8h7hkqawk5p")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + ,#~(list "LIBS=-lreadline" + (string-append "BINDIR=" #$output "/bin") + (string-append "MANDIR=" #$output "/share/man/man1")) + #:phases + (modify-phases %standard-phases + (delete 'configure) ; No configure script. + (add-after 'unpack 'fix-build + (lambda _ + (substitute* "Makefile" + (("lex cdlex.l") + "flex cdlex.l")) + (substitute* "cdecl.c" + ;; Fix "error: conflicting types for ‘getline’". + (("char \\* getline\\(\\)") + "char * our_getline(void)") + (("char \\* getline \\(\\)") + "char * our_getline(void)") + (("line = getline\\(\\)") + "line = our_getline()") + ;; Fix "error: conflicting types for ‘getopt’". + (("int getopt\\(int,char \\*\\*,char \\*\\);") + "") + ;; Fix invalid use of "restrict" as a variable name. + (("i, j, restrict") + "i, j, restriction") + (("restrict =") + "restriction =") + ;; Fix "warning: implicit declaration of function ‘add_history’". + (("# include " all) + (string-append all "\n# include ")) + ;; Fix "warning: implicit declaration of function ‘dotmpfile_from_string’". + (("void setprogname\\(char \\*\\);" all) + (string-append all "\nint dotmpfile_from_string(char *);")) + ;; Fix "warning: implicit declaration of function ‘completion_matches’". + (("matches = completion_matches\\(text, command_completion\\);") + "matches = rl_completion_matches(text, command_completion);") + (("char \\* command_completion\\(char \\*, int\\);") + "char * command_completion(const char *, int);") + (("char \\* command_completion\\(char \\*text, int flag\\)") + "char * command_completion(const char *text, int flag)") + ;; Fix "warning: ‘CPPFunction’ is deprecated". + (("rl_attempted_completion_function = \\(CPPFunction \\*\\)attempt_completion;") + "rl_attempted_completion_function = (rl_completion_func_t *)attempt_completion;") + ;; Fix "warning: ‘Function’ is deprecated". + (("rl_completion_entry_function = \\(Function \\*\\)keyword_completion;") + "rl_completion_entry_function = (rl_compentry_func_t *)keyword_completion;")) + ;; Fix typo in man page. + (substitute* "cdecl.1" + (("\t::= auto \\| extern \\| register \\| auto") + "\t::= auto | extern | register | static")))) + (add-before 'install 'create-directories + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (man (string-append out "/share/man/man1"))) + (mkdir-p bin) + (mkdir-p man))))) + #:tests? #f)) ; No "check" target. + (native-inputs (list bison flex)) + (inputs (list readline)) + (home-page "https://www.ibiblio.org/pub/linux/devel/lang/c/") + (synopsis "Turn English phrases into C or C++ declarations and vice versa") + (description "@code{cdecl} is a program that turns English-like phrases into C +declarations. It can also translate C into pseudo-English. It also handles +type casts and C++. It has command-line editing and history with the GNU +Readline library.") + (license license:public-domain))) + (define-public cscope (package (name "cscope") -- cgit 1.4.1