aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/code.scm53
-rw-r--r--gnu/packages/patches/rtags-separate-rct.patch72
2 files changed, 107 insertions, 18 deletions
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 042ea73a8c..a267688626 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -26,12 +26,13 @@
(define-module (gnu packages code)
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
+ #:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages databases)
#:use-module (gnu packages emacs)
#:use-module (gnu packages gcc)
@@ -43,6 +44,7 @@
#:use-module (gnu packages ncurses)
#:use-module (gnu packages autotools)
#:use-module (gnu packages llvm)
+ #:use-module (gnu packages lua)
#:use-module (gnu packages bash))
;;; Tools to deal with source code: metrics, cross-references, etc.
@@ -393,28 +395,43 @@ functionality such as HTML output.")
(name "rtags")
(version "2.16")
(home-page "https://github.com/Andersbakken/rtags")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url home-page)
- (commit "8ef7554852541eced514c56d5e39d6073f7a2ef9")
-
- ;; FIXME: This fetches bundled copies of Lua, RCT, and
- ;; Selene.
- (recursive? #t)))
- (sha256
- (base32
- "12r7lsqdmcbs9864a6dpblvifqvmfxhvxippyhfnnm2ai5ra80nc"))
- (file-name (git-file-name name version))))
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append home-page "/archive/v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (patches (search-patches "rtags-separate-rct.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Part of spliting rct with rtags.
+ ;; Substitute #include "rct/header.h" with #include <rct/header.h>.
+ '(with-directory-excursion "src"
+ (delete-file-recursively "rct") ;remove bundled copy
+ (let ((files (find-files "." ".*\\.cpp|.*\\.h")))
+ (substitute* files
+ (("#include ?\"rct/(.*.h)\"" all header)
+ (string-append "#include <rct/" header ">"))))))
+ (sha256
+ (base32
+ "17rkci3mmiw93qc32b9x76pg57b0lx80avr6wnmh190jx8n3v3wy"))))
(build-system cmake-build-system)
(arguments
- '(#:configure-flags '("-DBUILD_TESTING=FALSE"
- "-DRTAGS_NO_ELISP_FILES=1")
+ '(#:configure-flags
+ '("-DRTAGS_NO_ELISP_FILES=1"
+ "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+ "-DCMAKE_CXX_FLAGS=-std=c++11"
+ "-DBUILD_TESTING=FALSE")
#:tests? #f))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
(inputs
- `(("clang" ,clang)
+ `(("bash-completion" ,bash-completion)
+ ("clang" ,clang)
("llvm" ,llvm)
- ("bash-completion" ,bash-completion)))
+ ("lua" ,lua)
+ ("rct" ,rct)
+ ("selene" ,selene)))
(synopsis "Indexer for the C language family with Emacs integration")
(description
"RTags is a client/server application that indexes C/C++ code and keeps a
diff --git a/gnu/packages/patches/rtags-separate-rct.patch b/gnu/packages/patches/rtags-separate-rct.patch
new file mode 100644
index 0000000000..533e28b02e
--- /dev/null
+++ b/gnu/packages/patches/rtags-separate-rct.patch
@@ -0,0 +1,72 @@
+Unbundle RCT and use our own copy.
+
+--- rtags-2.16/src/CMakeLists.txt 2018-01-23 10:36:17.645855140 +0100
++++ rtags-2.16/src/CMakeLists.txt 2018-01-23 10:38:14.605234740 +0100
+@@ -105,12 +105,6 @@ if (LUA_ENABLED)
+ CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -DCMAKE_GENERATOR=${CMAKE_GENERATOR})
+ endif ()
+
+-set(RCT_RTTI_ENABLED 1)
+-set(RCT_NO_INSTALL 1)
+-set(RCT_NO_LIBRARY 1)
+-# Everyting which as been set either in rct/rct.cmake or rct/compiler.cmake
+-# doesn't need to be set in this file again.
+-include(rct/rct.cmake)
+
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wstrict-aliasing=2 -Wcast-qual -fPIC")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wstrict-aliasing=2 -Wcast-qual -fPIC")
+@@ -128,8 +122,7 @@ add_definitions(
+ "-DRTAGS_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
+ "-DCLANG_LIBDIR=${LIBCLANG_LIBDIR}"
+ "-DCLANG_VERSION=${LIBCLANG_VERSION_STRING}"
+- "-DOS_${CMAKE_SYSTEM_NAME}"
+- ${RCT_DEFINITIONS})
++ "-DOS_${CMAKE_SYSTEM_NAME}")
+
+ if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ add_definitions(-D__LONG_LONG_SUPPORTED)
+@@ -172,8 +165,7 @@ set(RTAGS_SOURCES
+ Symbol.cpp
+ SymbolInfoJob.cpp
+ Token.cpp
+- TokensJob.cpp
+- ${RCT_SOURCES})
++ TokensJob.cpp)
+
+ if (LUA_ENABLED)
+ list(APPEND RTAGS_SOURCES AST.cpp)
+@@ -195,10 +187,10 @@ endif ()
+
+ include_directories(
+ ${CMAKE_CURRENT_LIST_DIR}
+- ${RCT_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_LIST_DIR}/selene/include
+ ${CMAKE_CURRENT_BINARY_DIR}/lua-prefix/src/lua-build
+- ${CMAKE_CURRENT_LIST_DIR}/lua/src)
++ ${CMAKE_CURRENT_LIST_DIR}/lua/src
++ ${CMAKE_CURRENT_BINARY_DIR}/include)
+
+ if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ set(START_GROUP "")
+@@ -223,17 +215,17 @@ else ()
+ endif()
+
+ # RCT_LIBRARIES and stdc++ library must be at the end
+-set(RTAGS_LIBRARIES ${RTAGS_LIBRARIES} -lstdc++ ${RCT_LIBRARIES})
++set(RTAGS_LIBRARIES ${RTAGS_LIBRARIES} -lstdc++)
+ add_executable(rc rc.cpp)
+-target_link_libraries(rc ${RTAGS_LIBRARIES})
++target_link_libraries(rc ${RTAGS_LIBRARIES} rct)
+
+ add_executable(rdm rdm.cpp)
+-target_link_libraries(rdm ${RTAGS_LIBRARIES})
++target_link_libraries(rdm ${RTAGS_LIBRARIES} rct)
+
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
+
+ add_executable(rp rp.cpp)
+-target_link_libraries(rp ${RTAGS_LIBRARIES})
++target_link_libraries(rp ${RTAGS_LIBRARIES} rct)
+
+ if (CYGWIN)
+ EnsureLibraries(rdm rct)