about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/glm
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/glm')
-rw-r--r--nixpkgs/pkgs/development/libraries/glm/default.nix82
-rw-r--r--nixpkgs/pkgs/development/libraries/glm/glm.pc.in7
2 files changed, 89 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/glm/default.nix b/nixpkgs/pkgs/development/libraries/glm/default.nix
new file mode 100644
index 000000000000..8af09dcd6f6e
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/glm/default.nix
@@ -0,0 +1,82 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, cmake
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.9.9.8";
+  pname = "glm";
+
+  src = fetchFromGitHub {
+    owner = "g-truc";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-F//+3L5Ozrw6s7t4LrcUmO7sN30ZSESdrPAYX57zgr8=";
+  };
+
+  # https://github.com/g-truc/glm/pull/1055
+  # Fix more implicit-int-float-conversion warnings
+  # (https://github.com/g-truc/glm/pull/986 wasn't enough, and -Werror is used)
+  patches = [(fetchpatch {
+    url = "https://github.com/kraj/glm/commit/bd9b5060bc3b9581090d44f15b4e236566ea86a6.patch";
+    sha256 = "sha256-QO4o/wV564kJimBcEyr9TWzREEnRJ1n0j0HPojN4pkI=";
+  })];
+
+  outputs = [ "out" "doc" ];
+
+  nativeBuildInputs = [ cmake ];
+
+  # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102823
+  env.NIX_CFLAGS_COMPILE = lib.optionalString (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "11") "-fno-ipa-modref";
+
+  cmakeFlags = [
+    "-DBUILD_SHARED_LIBS=OFF"
+    "-DBUILD_STATIC_LIBS=OFF"
+    "-DGLM_TEST_ENABLE=${if doCheck then "ON" else "OFF"}"
+  ];
+
+  doCheck = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    # Install header-only library
+    mkdir -p $out/include
+    cp -rv ../glm $out/include
+    rm $out/include/glm/CMakeLists.txt
+    rm $out/include/glm/detail/*.cpp
+
+    # Install CMake files
+    mkdir -p $out/lib
+    cp -rv ../cmake $out/lib
+    substituteInPlace $out/lib/cmake/glm/glmConfig.cmake \
+        --replace 'GLM_INCLUDE_DIRS ''${_IMPORT_PREFIX}' "GLM_INCLUDE_DIRS $out/include"
+
+    # Install pkg-config file
+    mkdir -p $out/lib/pkgconfig
+    substituteAll ${./glm.pc.in} $out/lib/pkgconfig/glm.pc
+
+    # Install docs
+    mkdir -p $doc/share/doc/glm
+    cp -rv ../doc/api $doc/share/doc/glm/html
+    cp -v ../doc/manual.pdf $doc/share/doc/glm
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "OpenGL Mathematics library for C++";
+    longDescription = ''
+      OpenGL Mathematics (GLM) is a header only C++ mathematics library for
+      graphics software based on the OpenGL Shading Language (GLSL)
+      specification and released under the MIT license.
+    '';
+    homepage = "https://github.com/g-truc/glm";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ smancill ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/development/libraries/glm/glm.pc.in b/nixpkgs/pkgs/development/libraries/glm/glm.pc.in
new file mode 100644
index 000000000000..e196c793d1d5
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/glm/glm.pc.in
@@ -0,0 +1,7 @@
+prefix=@out@
+includedir=@out@/include
+
+Name: GLM
+Description: OpenGL Mathematics
+Version: @version@
+Cflags: -I${includedir}