178 lines
5.1 KiB
Nix
178 lines
5.1 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
fetchpatch2,
|
|
makeDesktopItem,
|
|
copyDesktopItems,
|
|
cmake,
|
|
boost,
|
|
cgal,
|
|
eigen,
|
|
flann,
|
|
gdal,
|
|
gmp,
|
|
laszip,
|
|
mpfr,
|
|
pcl,
|
|
libsForQt5,
|
|
nixosTests,
|
|
onetbb,
|
|
xercesc,
|
|
wrapGAppsHook3,
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "cloudcompare";
|
|
version = "2.13.2";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "CloudCompare";
|
|
repo = "CloudCompare";
|
|
tag = "v${finalAttrs.version}";
|
|
hash = "sha256-a/0lf3Mt5ZpLFRM8jAoqZer8pY1ROgPRY4dPt34Bk3E=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
patches = [
|
|
# https://github.com/CloudCompare/CloudCompare/pull/2208
|
|
(fetchpatch2 {
|
|
url = "https://github.com/CloudCompare/CloudCompare/commit/8e1c0562a7c19fd26ccd0c23bb05fb7c36980e0c.patch?full_index=1";
|
|
hash = "sha256-DARxLiRjcBJEo63o92ujjxBU42Y8CY2c7px8Y9UD5A4=";
|
|
})
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
eigen # header-only
|
|
wrapGAppsHook3
|
|
copyDesktopItems
|
|
libsForQt5.wrapQtAppsHook
|
|
];
|
|
|
|
buildInputs = [
|
|
boost
|
|
cgal
|
|
flann
|
|
gdal
|
|
gmp
|
|
laszip
|
|
mpfr
|
|
pcl
|
|
libsForQt5.qtbase
|
|
libsForQt5.qtsvg
|
|
libsForQt5.qttools
|
|
onetbb
|
|
xercesc
|
|
];
|
|
|
|
cmakeFlags = [
|
|
"-DCCCORELIB_USE_TBB=ON"
|
|
"-DOPTION_USE_DXF_LIB=ON"
|
|
"-DOPTION_USE_GDAL=ON"
|
|
"-DOPTION_USE_SHAPE_LIB=ON"
|
|
|
|
"-DPLUGIN_GL_QEDL=ON"
|
|
"-DPLUGIN_GL_QSSAO=ON"
|
|
|
|
"-DPLUGIN_IO_QADDITIONAL=ON"
|
|
"-DPLUGIN_IO_QCORE=ON"
|
|
"-DPLUGIN_IO_QCSV_MATRIX=ON"
|
|
"-DPLUGIN_IO_QE57=ON"
|
|
"-DPLUGIN_IO_QFBX=OFF" # Autodesk FBX SDK is gratis+proprietary; not packaged in nixpkgs
|
|
"-DPLUGIN_IO_QLAS=ON" # required for .las/.laz support
|
|
"-DLASZIP_INCLUDE_DIR=${lib.getInclude laszip}/include/laszip"
|
|
"-DPLUGIN_IO_QPHOTOSCAN=ON"
|
|
"-DPLUGIN_IO_QRDB=OFF" # Riegl rdblib is proprietary; not packaged in nixpkgs
|
|
|
|
"-DCCCORELIB_USE_CGAL=ON" # enables Delauney triangulation support
|
|
"-DPLUGIN_STANDARD_QPCL=ON" # Adds PCD import and export support
|
|
"-DPLUGIN_STANDARD_QANIMATION=ON"
|
|
"-DPLUGIN_STANDARD_QBROOM=ON"
|
|
"-DPLUGIN_STANDARD_QCANUPO=ON"
|
|
"-DPLUGIN_STANDARD_QCOMPASS=ON"
|
|
"-DPLUGIN_STANDARD_QCSF=ON"
|
|
"-DPLUGIN_STANDARD_QFACETS=ON"
|
|
"-DPLUGIN_STANDARD_QHOUGH_NORMALS=ON"
|
|
"-DEIGEN_ROOT_DIR=${eigen}/include/eigen3" # needed for hough normals
|
|
"-DPLUGIN_STANDARD_QHPR=ON"
|
|
"-DPLUGIN_STANDARD_QM3C2=ON"
|
|
"-DPLUGIN_STANDARD_QMPLANE=ON"
|
|
"-DPLUGIN_STANDARD_QPOISSON_RECON=ON"
|
|
"-DPLUGIN_STANDARD_QRANSAC_SD=OFF" # not compatible with GPL, broken on non-x86
|
|
"-DPLUGIN_STANDARD_QSRA=ON"
|
|
"-DPLUGIN_STANDARD_QCLOUDLAYERS=ON"
|
|
# Fix the build with CMake 4, by overriding the minimum version globally, as support for < 3.5 was removed
|
|
# Ideally this can be removed at some time, but there are a lot of dependencies (e.g. plugins) which have a lower minimum version configured.
|
|
(lib.strings.cmakeFeature "CMAKE_POLICY_VERSION_MINIMUM" "3.5")
|
|
];
|
|
|
|
dontWrapGApps = true;
|
|
|
|
postInstall = ''
|
|
install -Dm444 $src/qCC/images/icon/cc_icon_16.png $out/share/icons/hicolor/16x16/apps/CloudCompare.png
|
|
install -Dm444 $src/qCC/images/icon/cc_icon_32.png $out/share/icons/hicolor/32x32/apps/CloudCompare.png
|
|
install -Dm444 $src/qCC/images/icon/cc_icon_64.png $out/share/icons/hicolor/64x64/apps/CloudCompare.png
|
|
install -Dm444 $src/qCC/images/icon/cc_icon_256.png $out/share/icons/hicolor/256x256/apps/CloudCompare.png
|
|
|
|
install -Dm444 $src/qCC/images/icon/cc_viewer_icon_16.png $out/share/icons/hicolor/16x16/apps/ccViewer.png
|
|
install -Dm444 $src/qCC/images/icon/cc_viewer_icon_32.png $out/share/icons/hicolor/32x32/apps/ccViewer.png
|
|
install -Dm444 $src/qCC/images/icon/cc_viewer_icon_64.png $out/share/icons/hicolor/64x64/apps/ccViewer.png
|
|
install -Dm444 $src/qCC/images/icon/cc_viewer_icon_256.png $out/share/icons/hicolor/256x256/apps/ccViewer.png
|
|
'';
|
|
|
|
# fix file dialogs crashing on non-NixOS (and avoid double wrapping)
|
|
preFixup = ''
|
|
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
|
'';
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
name = "CloudCompare";
|
|
desktopName = "CloudCompare";
|
|
comment = "3D point cloud and mesh processing software";
|
|
exec = "CloudCompare";
|
|
terminal = false;
|
|
categories = [
|
|
"Graphics"
|
|
"3DGraphics"
|
|
"Viewer"
|
|
];
|
|
keywords = [
|
|
"3d"
|
|
"processing"
|
|
];
|
|
icon = "CloudCompare";
|
|
})
|
|
(makeDesktopItem {
|
|
name = "ccViewer";
|
|
desktopName = "CloudCompare Viewer";
|
|
comment = "3D point cloud and mesh processing software";
|
|
exec = "ccViewer";
|
|
terminal = false;
|
|
categories = [
|
|
"Graphics"
|
|
"3DGraphics"
|
|
"Viewer"
|
|
];
|
|
keywords = [
|
|
"3d"
|
|
"viewer"
|
|
];
|
|
icon = "ccViewer";
|
|
})
|
|
];
|
|
|
|
passthru.tests = nixosTests.cloudcompare;
|
|
|
|
meta = {
|
|
description = "3D point cloud and mesh processing software";
|
|
homepage = "https://cloudcompare.org";
|
|
license = lib.licenses.gpl2Plus;
|
|
maintainers = with lib.maintainers; [ nh2 ];
|
|
teams = [ lib.teams.geospatial ];
|
|
mainProgram = "CloudCompare";
|
|
platforms = with lib.platforms; linux; # only tested here; might work on others
|
|
};
|
|
})
|