aboutsummaryrefslogtreecommitdiff
path: root/srcds-pkgs/vtflib-strata/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'srcds-pkgs/vtflib-strata/default.nix')
-rw-r--r--srcds-pkgs/vtflib-strata/default.nix54
1 files changed, 54 insertions, 0 deletions
diff --git a/srcds-pkgs/vtflib-strata/default.nix b/srcds-pkgs/vtflib-strata/default.nix
new file mode 100644
index 0000000..b8c1f77
--- /dev/null
+++ b/srcds-pkgs/vtflib-strata/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenv, fetchFromGitHub, runCommand
+, cmake, compressonator-sdk
+}:
+stdenv.mkDerivation rec {
+ pname = "vtflib-strata";
+ version = "2024-05-31";
+
+ src = let
+ cmplibs = "CMP_Compressonator" + lib.optionalString (!stdenv.isAarch64)
+ " CMP_Core CMP_Core_SSE CMP_Core_AVX CMP_Core_AVX512";
+ osrc = fetchFromGitHub {
+ owner = "StrataSource";
+ repo = "vtflib";
+ rev = "418b1fc341f0912c86fb31867c91dbfd19beff66";
+ hash = "sha256-/oSHgI2F/IJRHVoxq2emfzzTI4fM4Co3V49+GU6ZKbQ=";
+ };
+ in runCommand "vtflib-strata-source-revendored" {} ''
+ cp -r ${osrc} $out
+ chmod -R +w $out
+
+ sed -E -i 's/_?stricmp/strcasecmp/g' \
+ $out/VTFLib/VMT{Wrapper,GroupNode}.cpp
+ sed -i 's/--no-undefined/-undefined,error/' \
+ $out/CMakeLists.txt
+ sed -i 's/CMP_Compressonator/${cmplibs}/' \
+ $out/CMakeLists.txt
+ cp ${compressonator-sdk}/lib/libCMP_*.a \
+ $out/thirdparty/lib/x64/
+ cp ${compressonator-sdk}/include/compressonator.h \
+ $out/thirdparty/include/Compressonator.h
+
+ chmod -R -w $out
+ '';
+
+ postPatch = ''
+ cat ${./CMakeLists.txt.append} >> CMakeLists.txt
+ '';
+
+ nativeBuildInputs = [ cmake ];
+
+ installPhase = ''
+ runHook preInstall
+ mkdir -p $out
+ cmake --install .
+ runHook postInstall
+ '';
+
+ meta = {
+ homepage = src.url;
+ description = "C and C++ API for reading and writing Valve VTF and VMT format image files";
+ license = with lib.licenses; [ lgpl2 gpl2 ];
+ platforms = lib.platforms.unix;
+ };
+}