Fix Synergy building on macOS

Update gtest and gmock to fix clang compiler issues, as well as patch
CMakeLists.txt in multiple places to fix other issues on macOS.
This commit is contained in:
Michael Hoang
2018-07-16 23:57:40 +10:00
committed by Michael
parent 1a246c0d19
commit fe69ee86c8
4 changed files with 254 additions and 16 deletions
+32 -14
View File
@@ -1,7 +1,6 @@
{ stdenv, fetchFromGitHub, fetchpatch, cmake, xlibsWrapper, libX11, libXi, libXtst, libXrandr
, xinput, curl, openssl, unzip }:
with stdenv.lib;
{ stdenv, lib, fetchFromGitHub, fetchpatch, fetchurl, cmake, xlibsWrapper
, ApplicationServices, Carbon, Cocoa, CoreServices, ScreenSaver
, libX11, libXi, libXtst, libXrandr, xinput, curl, openssl, unzip }:
stdenv.mkDerivation rec {
name = "synergy-${version}";
@@ -14,17 +13,33 @@ stdenv.mkDerivation rec {
sha256 = "0ksgr9hkf09h54572p7k7b9zkfhcdb2g2d5x7ixxn028y8i3jyp3";
};
patches = [ ./openssl-1.1.patch ];
patches = [./openssl-1.1.patch ./update_gtest_gmock.patch
] ++ lib.optional stdenv.isDarwin ./respect_macos_arch.patch;
patch_gcc6 = fetchpatch {
url = https://raw.githubusercontent.com/gentoo/gentoo/20e2bff3697ebf5f291e9907b34aae3074a36b53/dev-cpp/gmock/files/gmock-1.7.0-gcc6.patch;
sha256 = "0j3f381x1lf8qci9pfv6mliggl8qs2w05v5lw3rs3gn7aibg174d";
};
# Due to the included gtest and gmock not supporting clang
# we replace it with 1.7.0 for synergy-1.8.8. This should
# become unnecessary when we update to a newer version of Synergy.
gmock_zip = fetchurl {
url = https://github.com/google/googlemock/archive/release-1.7.0.zip;
sha256 = "11bd04098rzamv7f9y01zaf9c8zrmzdk6g1qrlwq780pxzlr4ya0";
};
gtest_zip = fetchurl {
url = https://github.com/google/googletest/archive/release-1.7.0.zip;
sha256 = "1l5n6kzdypjzjrz2jh14ylzrx735lccfx2p3s4ccgci8g9abg35m";
};
postPatch = ''
${unzip}/bin/unzip -d ext/gmock-1.6.0 ext/gmock-1.6.0.zip
${unzip}/bin/unzip -d ext/gtest-1.6.0 ext/gtest-1.6.0.zip
patch -d ext/gmock-1.6.0 -p1 -i ${patch_gcc6}
${unzip}/bin/unzip -d ext/ ${gmock_zip}
${unzip}/bin/unzip -d ext/ ${gtest_zip}
mv ext/googlemock-release-1.7.0 ext/gmock-1.7.0
mv ext/googletest-release-1.7.0 ext/gtest-1.7.0
patch -d ext/gmock-1.7.0 -p1 -i ${patch_gcc6}
''
# We have XRRNotifyEvent (libXrandr), but with the upstream CMakeLists.txt
# it's not able to find it (it's trying to search the store path of libX11
@@ -38,15 +53,19 @@ stdenv.mkDerivation rec {
# Looking for XRRNotifyEvent - not found
#
# So let's force it:
+ optionalString stdenv.isLinux ''
+ lib.optionalString stdenv.isLinux ''
sed -i -e '/HAVE_X11_EXTENSIONS_XRANDR_H/c \
set(HAVE_X11_EXTENSIONS_XRANDR_H true)
' CMakeLists.txt
'';
cmakeFlags = lib.optionals stdenv.isDarwin [ "-DOSX_TARGET_MAJOR=10" "-DOSX_TARGET_MINOR=7" ];
buildInputs = [
cmake xlibsWrapper libX11 libXi libXtst libXrandr xinput curl openssl
];
cmake curl openssl
] ++ lib.optionals stdenv.isDarwin [
ApplicationServices Carbon Cocoa CoreServices ScreenSaver
] ++ lib.optionals stdenv.isLinux [ xlibsWrapper libX11 libXi libXtst libXrandr xinput ];
installPhase = ''
mkdir -p $out/bin
@@ -58,12 +77,11 @@ stdenv.mkDerivation rec {
doCheck = true;
checkPhase = "../bin/unittests";
meta = {
meta = with lib; {
description = "Share one mouse and keyboard between multiple computers";
homepage = http://synergy-project.org/;
license = licenses.gpl2;
maintainers = [ maintainers.aszlig ];
maintainers = with maintainers; [ aszlig enzime ];
platforms = platforms.all;
broken = stdenv.isDarwin;
};
}