about summary refs log tree commit diff
path: root/pkgs/applications/misc/opencpn
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2022-10-26 19:11:00 +0200
committerWeijia Wang <9713184+wegank@users.noreply.github.com>2022-10-26 19:11:00 +0200
commit260c760ca4ed98fc3d73eac9c9c56e5f51ca9ab7 (patch)
tree78daf7d8b00592f30384b060d2f9b736b5252e49 /pkgs/applications/misc/opencpn
parent26962c8787828ac3f38186c67aa9c51d02152255 (diff)
opencpn: add darwin support
Diffstat (limited to 'pkgs/applications/misc/opencpn')
-rw-r--r--pkgs/applications/misc/opencpn/default.nix57
1 files changed, 47 insertions, 10 deletions
diff --git a/pkgs/applications/misc/opencpn/default.nix b/pkgs/applications/misc/opencpn/default.nix
index 5ac167a100316..590ca33045169 100644
--- a/pkgs/applications/misc/opencpn/default.nix
+++ b/pkgs/applications/misc/opencpn/default.nix
@@ -1,10 +1,12 @@
-{ stdenv, lib
+{ stdenv
+, lib
 , alsa-utils
 , at-spi2-core
 , cmake
 , curl
 , dbus
 , fetchFromGitHub
+, fetchpatch
 , flac
 , gtk3
 , jasper
@@ -26,6 +28,7 @@
 , libxkbcommon
 , lsb-release
 , lz4
+, makeWrapper
 , pcre
 , pkg-config
 , portaudio
@@ -33,7 +36,7 @@
 , tinyxml
 , udev
 , util-linux
-, wxGTK31-gtk3
+, wxGTK32
 , xorg
 }:
 
@@ -48,9 +51,32 @@ stdenv.mkDerivation rec {
     hash = "sha256-sNZYf/2gtjRrrGPuazVnKTgcuIQpKPazhexqlK21T4g=";
   };
 
-  nativeBuildInputs = [ cmake lsb-release pkg-config ];
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/OpenCPN/OpenCPN/commit/30fa16850ba97d3df0622273947e3e3975b8e6c0.patch";
+      sha256 = "sha256-Sb4FE9QJA5kMJi52/x1Az6rMTS3WSURPx4QAhcv2j9E=";
+    })
+  ];
+
+  postPatch = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace cmake/TargetSetup.cmake \
+      --replace '"sw_vers" "-productVersion"' '"echo" "1"'
+    sed -i '/fixup_bundle/d' CMakeLists.txt
+  '' + lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) ''
+    substituteInPlace CMakeLists.txt \
+      --replace 'DARWIN_VERSION LESS 16' 'TRUE'
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ] ++ lib.optionals stdenv.isLinux [
+    lsb-release
+  ] ++ lib.optionals stdenv.isDarwin [
+    makeWrapper
+  ];
+
   buildInputs = [
-    alsa-utils
     at-spi2-core
     curl
     dbus
@@ -65,8 +91,6 @@ stdenv.mkDerivation rec {
     libexif
     libogg
     libopus
-    libselinux
-    libsepol
     libsndfile
     libthai
     libunarr
@@ -78,23 +102,36 @@ stdenv.mkDerivation rec {
     portaudio
     sqlite
     tinyxml
+    wxGTK32
+  ] ++ lib.optionals stdenv.isLinux [
+    alsa-utils
+    libselinux
+    libsepol
     udev
     util-linux
-    wxGTK31-gtk3
     xorg.libXdmcp
     xorg.libXtst
   ];
 
-
   cmakeFlags = [ "-DOCPN_BUNDLE_DOCS=true" ];
 
+  NIX_CFLAGS_COMPILE = lib.optionals (!stdenv.hostPlatform.isx86) [
+    "-DSQUISH_USE_SSE=0"
+  ];
+
+  postInstall = lib.optionals stdenv.isDarwin ''
+    mkdir -p $out/Applications
+    mv $out/bin/OpenCPN.app $out/Applications
+    makeWrapper $out/Applications/OpenCPN.app/Contents/MacOS/OpenCPN $out/bin/opencpn
+  '';
+
   doCheck = true;
 
   meta = with lib; {
     description = "A concise ChartPlotter/Navigator";
     maintainers = with maintainers; [ kragniz lovesegfault ];
-    platforms = [ "x86_64-linux" ];
-    license = licenses.gpl2;
+    platforms = platforms.unix;
+    license = licenses.gpl2Plus;
     homepage = "https://opencpn.org/";
   };
 }