summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/libraries/fastcdr/0001-Do-not-require-wget-and-unzip.patch34
-rw-r--r--pkgs/development/libraries/fastcdr/default.nix56
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 92 insertions, 0 deletions
diff --git a/pkgs/development/libraries/fastcdr/0001-Do-not-require-wget-and-unzip.patch b/pkgs/development/libraries/fastcdr/0001-Do-not-require-wget-and-unzip.patch
new file mode 100644
index 00000000000..8908beb0824
--- /dev/null
+++ b/pkgs/development/libraries/fastcdr/0001-Do-not-require-wget-and-unzip.patch
@@ -0,0 +1,34 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+Date: Sat, 5 Jun 2021 14:50:26 +0200
+Subject: [PATCH] Do not require wget and unzip
+
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2261fe7..ce8edad 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -243,21 +243,6 @@ if(BUILD_DOCUMENTATION)
+         set(DOXYFILE_MAKE make.bat)
+     endif()
+ 
+-    if(NOT CHECK_DOCUMENTATION)
+-        find_program(WGET_EXE wget)
+-        if(WGET_EXE)
+-            message(STATUS "Found WGet: ${WGET_EXE}")
+-        else()
+-            message(FATAL_ERROR "wget is needed to build the documentation. Please install it correctly")
+-        endif()
+-        find_program(UNZIP_EXE unzip)
+-        if(UNZIP_EXE)
+-            message(STATUS "Found Unzip: ${UNZIP_EXE}")
+-        else()
+-            message(FATAL_ERROR "unzip is needed to build the documentation. Please install it correctly")
+-        endif()
+-    endif()
+-
+     # Target to create documentation directories
+     add_custom_target(docdirs
+         COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/doc
+-- 
+2.40.1
+
diff --git a/pkgs/development/libraries/fastcdr/default.nix b/pkgs/development/libraries/fastcdr/default.nix
new file mode 100644
index 00000000000..19998799a6f
--- /dev/null
+++ b/pkgs/development/libraries/fastcdr/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, gtest
+, withDocs ? true
+, doxygen
+, graphviz-nox
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "fastcdr";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "eProsima";
+    repo = "Fast-CDR";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-ZJQnm3JN56y2v/XIShfZxkEEu1AKMJxt8wpRqSn9HWk=";
+  };
+
+  patches = [
+    ./0001-Do-not-require-wget-and-unzip.patch
+  ];
+
+  cmakeFlags = lib.optional (stdenv.hostPlatform.isStatic) "-DBUILD_SHARED_LIBS=OFF"
+  # fastcdr doesn't respect BUILD_TESTING
+  ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) "-DEPROSIMA_BUILD_TESTS=ON"
+  ++ lib.optional withDocs "-DBUILD_DOCUMENTATION=ON";
+
+  outputs = [ "out" ] ++ lib.optional withDocs "doc";
+
+  nativeBuildInputs = [
+    cmake
+  ] ++ lib.optionals withDocs [
+    doxygen
+    graphviz-nox
+  ];
+
+  doCheck = true;
+
+  checkInputs = [ gtest ];
+
+  meta = with lib; {
+    homepage = "https://github.com/eProsima/Fast-CDR";
+    description = "Serialization library for OMG's Common Data Representation (CDR)";
+    longDescription = ''
+      A C++ library that provides two serialization mechanisms. One is the
+      standard CDR serialization mechanism, while the other is a faster
+      implementation that modifies the standard.
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ panicgh ];
+    platforms = platforms.unix;
+  };
+})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f6abce1fac2..505401c56f0 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -21344,6 +21344,8 @@ with pkgs;
     autoreconfHook = buildPackages.autoreconfHook269;
   };
 
+  fastcdr = callPackage ../development/libraries/fastcdr { };
+
   fbthrift = callPackage ../development/libraries/fbthrift { };
 
   fb303 = callPackage ../development/libraries/fb303 { };