about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/cxxopts
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/cxxopts')
-rw-r--r--nixpkgs/pkgs/development/libraries/cxxopts/default.nix41
-rw-r--r--nixpkgs/pkgs/development/libraries/cxxopts/fix-install-path.patch18
2 files changed, 59 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/cxxopts/default.nix b/nixpkgs/pkgs/development/libraries/cxxopts/default.nix
new file mode 100644
index 000000000000..9d3ea6f32de3
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/cxxopts/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, icu
+, pkg-config
+, enableUnicodeHelp ? true
+}:
+
+stdenv.mkDerivation rec {
+  name = "cxxopts";
+  version = "3.0.0";
+
+  src = fetchFromGitHub {
+    owner = "jarro2783";
+    repo = name;
+    rev = "v${version}";
+    sha256 = "08x7j168l1xwj0r3rv89cgghmfhsx98lpq35r3vkh504m1pd55a6";
+  };
+
+  # CMake does not set CMAKE_LIBRARY_ARCHITECTURE variable in Nix, which breaks architecture-independent library path generation
+  patches = [ ./fix-install-path.patch ];
+
+  buildInputs = lib.optional enableUnicodeHelp [ icu.dev ];
+  cmakeFlags = [ "-DCXXOPTS_BUILD_EXAMPLES=OFF" ]
+    ++ lib.optional enableUnicodeHelp "-DCXXOPTS_USE_UNICODE_HELP=TRUE";
+  nativeBuildInputs = [ cmake ] ++ lib.optional enableUnicodeHelp [ pkg-config ];
+
+  doCheck = true;
+
+  # Conflict on case-insensitive filesystems.
+  dontUseCmakeBuildDir = true;
+
+  meta = with lib; {
+    homepage = "https://github.com/jarro2783/cxxopts";
+    description = "Lightweight C++ GNU-style option parser library";
+    license = licenses.mit;
+    maintainers = [ maintainers.spease ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/cxxopts/fix-install-path.patch b/nixpkgs/pkgs/development/libraries/cxxopts/fix-install-path.patch
new file mode 100644
index 000000000000..d91e3fb6dc18
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/cxxopts/fix-install-path.patch
@@ -0,0 +1,18 @@
+diff --git a/cmake/cxxopts.cmake b/cmake/cxxopts.cmake
+index 46e87ba..0ead543 100644
+--- a/cmake/cxxopts.cmake
++++ b/cmake/cxxopts.cmake
+@@ -87,7 +87,12 @@ endfunction()
+ 
+ # Helper function to ecapsulate install logic
+ function(cxxopts_install_logic)
+-    string(REPLACE "/${CMAKE_LIBRARY_ARCHITECTURE}" "" CMAKE_INSTALL_LIBDIR_ARCHIND "${CMAKE_INSTALL_LIBDIR}")
++    if(CMAKE_LIBRARY_ARCHITECTURE)
++        string(REPLACE "/${CMAKE_LIBRARY_ARCHITECTURE}" "" CMAKE_INSTALL_LIBDIR_ARCHIND "${CMAKE_INSTALL_LIBDIR}")
++    else()
++        # On some systems (e.g. NixOS), `CMAKE_LIBRARY_ARCHITECTURE` can be empty
++        set(CMAKE_INSTALL_LIBDIR_ARCHIND "${CMAKE_INSTALL_LIBDIR}")
++    endif()
+     set(CXXOPTS_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR_ARCHIND}/cmake/cxxopts" CACHE STRING "Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.")
+     set(version_config "${PROJECT_BINARY_DIR}/cxxopts-config-version.cmake")
+     set(project_config "${PROJECT_BINARY_DIR}/cxxopts-config.cmake")