diff options
Diffstat (limited to 'pkgs/development/libraries/qt-5/5.8/qtbase/default.nix')
-rw-r--r-- | pkgs/development/libraries/qt-5/5.8/qtbase/default.nix | 113 |
1 files changed, 76 insertions, 37 deletions
diff --git a/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix index 7da02525f2de..f881c76c3ad9 100644 --- a/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix +++ b/pkgs/development/libraries/qt-5/5.8/qtbase/default.nix @@ -4,6 +4,8 @@ coreutils, bison, flex, gdb, gperf, lndir, patchelf, perl, pkgconfig, python2, ruby, + # darwin support + darwin, libiconv, libcxx, dbus, fontconfig, freetype, glib, gtk3, harfbuzz, icu, libX11, libXcomposite, libXcursor, libXext, libXi, libXrender, libinput, libjpeg, libpng, libtiff, @@ -15,7 +17,8 @@ cups ? null, mysql ? null, postgresql ? null, # options - mesaSupported, mesa, + mesaSupported ? (!stdenv.isDarwin), + mesa, buildExamples ? false, buildTests ? false, developerBuild ? false, @@ -35,6 +38,7 @@ stdenv.mkDerivation { patches = copyPathsToStore (lib.readPathsFromFile ./. ./series) + ++ [(if stdenv.isDarwin then ./cmake-paths-darwin.patch else ./cmake-paths.patch)] ++ lib.optional decryptSslTraffic ./decrypt-ssl-traffic.patch ++ lib.optionals mesaSupported [ ./dlopen-gl.patch ./mkspecs-libgl.patch ]; @@ -54,11 +58,11 @@ stdenv.mkDerivation { substituteInPlace src/network/kernel/qhostinfo_unix.cpp \ --replace "@glibc@" "${stdenv.cc.libc.out}" - substituteInPlace src/plugins/platforms/xcb/qxcbcursor.cpp \ - --replace "@libXcursor@" "${libXcursor.out}" - substituteInPlace src/network/ssl/qsslsocket_openssl_symbols.cpp \ --replace "@openssl@" "${openssl.out}" + '' + lib.optionalString stdenv.isLinux '' + substituteInPlace src/plugins/platforms/xcb/qxcbcursor.cpp \ + --replace "@libXcursor@" "${libXcursor.out}" substituteInPlace src/dbus/qdbus_symbols.cpp \ --replace "@dbus_libs@" "${dbus.lib}" @@ -74,8 +78,23 @@ stdenv.mkDerivation { substituteInPlace mkspecs/common/linux.conf \ --replace "@mesa_lib@" "${mesa.out}" \ --replace "@mesa_inc@" "${mesa.dev or mesa}" - ''; - + ''+ lib.optionalString stdenv.isDarwin '' + sed -i \ + -e 's|! /usr/bin/xcode-select --print-path >/dev/null 2>&1;|false;|' \ + -e 's|! /usr/bin/xcrun -find xcodebuild >/dev/null 2>&1;|false;|' \ + -e 's|sysroot=$(/usr/bin/xcodebuild -sdk $sdk -version Path 2>/dev/null)|sysroot="${darwin.apple_sdk.sdk}"|' \ + -e 's|QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX`|QMAKE_CXX="clang++"\nQMAKE_CONF_COMPILER="clang++"|' \ + -e 's|XCRUN=`/usr/bin/xcrun -sdk macosx clang -v 2>&1`|XCRUN="clang -v 2>&1"|' \ + -e 's#sdk_val=$(/usr/bin/xcrun -sdk $sdk -find $(echo $val | cut -d \x27 \x27 -f 1))##' \ + -e 's#val=$(echo $sdk_val $(echo $val | cut -s -d \x27 \x27 -f 2-))##' \ + ./configure + sed -i '3,$d' ./mkspecs/features/mac/default_pre.prf + sed -i '26,$d' ./mkspecs/features/mac/default_post.prf + sed -i '1,$d' ./mkspecs/features/mac/sdk.prf + sed -i 's/QMAKE_LFLAGS_RPATH = -Wl,-rpath,/QMAKE_LFLAGS_RPATH =/' ./mkspecs/common/mac.conf + ''; + # Note on the above: \x27 is a way if including a single-quote + # character in the sed string arguments. setOutputFlags = false; preConfigure = '' @@ -102,7 +121,7 @@ stdenv.mkDerivation { -shared ${lib.optionalString developerBuild "-developer-build"} -accessibility - -rpath + -optimized-qmake -strip -no-reduce-relocations -system-proxies @@ -114,15 +133,6 @@ stdenv.mkDerivation { -qml-debug -icu -pch - -glib - -xcb - -qpa xcb - -${lib.optionalString (cups == null) "no-"}cups - - -no-eglfs - -no-directfb - -no-linuxfb - -no-kms ${lib.optionalString (!system-x86_64) "-no-sse2"} -no-sse3 @@ -135,16 +145,10 @@ stdenv.mkDerivation { -no-mips_dspr2 -system-zlib - -system-libpng -system-libjpeg -system-harfbuzz - -system-xcb - -system-xkbcommon -system-pcre -openssl-linked - -dbus-linked - -libinput - -gtk -system-sqlite -${if mysql != null then "plugin" else "no"}-sql-mysql @@ -155,6 +159,31 @@ stdenv.mkDerivation { -${lib.optionalString (buildExamples == false) "no"}make examples -${lib.optionalString (buildTests == false) "no"}make tests -v + '' + lib.optionalString (!stdenv.isDarwin) '' + -rpath + -glib + -xcb + -qpa xcb + + -${lib.optionalString (cups == null) "no-"}cups + + -no-eglfs + -no-directfb + -no-linuxfb + -no-kms + + -libinput + -gtk + -system-libpng + -system-xcb + -system-xkbcommon + -dbus-linked + '' + lib.optionalString stdenv.isDarwin '' + -platform macx-clang + -no-use-gold-linker + -no-fontconfig + -qt-freetype + -qt-libpng ''; # PostgreSQL autodetection fails sporadically because Qt omits the "-lpq" flag @@ -163,32 +192,44 @@ stdenv.mkDerivation { PSQL_LIBS = lib.optionalString (postgresql != null) "-L${postgresql.lib}/lib -lpq"; propagatedBuildInputs = [ - dbus glib libxml2 libxslt openssl pcre16 sqlite udev zlib + libxml2 libxslt openssl pcre16 sqlite zlib + + # Text rendering + harfbuzz icu # Image formats libjpeg libpng libtiff + ] + ++ lib.optional mesaSupported mesa + ++ lib.optionals (!stdenv.isDarwin) [ + dbus glib udev # Text rendering - fontconfig freetype harfbuzz icu + fontconfig freetype # X11 libs libX11 libXcomposite libXext libXi libXrender libxcb libxkbcommon xcbutil xcbutilimage xcbutilkeysyms xcbutilrenderutil xcbutilwm - ] - ++ lib.optional mesaSupported mesa; + ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ + ApplicationServices Foundation CoreServices AppKit Carbon OpenGL AGL Cocoa + DiskArbitration darwin.cf-private libiconv darwin.apple_sdk.sdk + ]); - buildInputs = - [ gtk3 libinput ] + buildInputs = [ ] + ++ lib.optionals (!stdenv.isDarwin) [ gtk3 libinput ] ++ lib.optional developerBuild gdb ++ lib.optional (cups != null) cups ++ lib.optional (mysql != null) mysql.lib ++ lib.optional (postgresql != null) postgresql; - nativeBuildInputs = - [ bison flex gperf lndir patchelf perl pkgconfig python2 ]; + nativeBuildInputs = [ bison flex gperf lndir perl pkgconfig python2 ] ++ lib.optional (!stdenv.isDarwin) patchelf; # freetype-2.5.4 changed signedness of some struct fields - NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare"; + NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare" + + lib.optionalString stdenv.isDarwin " -D__MAC_OS_X_VERSION_MAX_ALLOWED=1090 -D__AVAILABILITY_INTERNAL__MAC_10_10=__attribute__((availability(macosx,introduced=10.10)))"; + # Note that nixpkgs's objc4 is from macOS 10.11 while the SDK is + # 10.9 which necessitates the above macro definition that mentions + # 10.10 postInstall = '' find "$out" -name "*.cmake" | while read file; do @@ -218,7 +259,7 @@ stdenv.mkDerivation { # Move libtool archives and qmake projects if [ "z''${!outputLib}" != "z''${!outputDev}" ]; then pushd "''${!outputLib}" - find lib -name '*.a' -o -name '*.la' -o -name '*.prl' | \ + find lib -name '*.a' -o -name '*.la'${if stdenv.isDarwin then "" else "-o -name '*.prl'"} | \ while read -r file; do mkdir -p "''${!outputDev}/$(dirname "$file")" mv "''${!outputLib}/$file" "''${!outputDev}/$file" @@ -226,14 +267,12 @@ stdenv.mkDerivation { popd fi '' - # fixup .pc file (where to find 'moc' etc.) + lib.optionalString (!stdenv.isDarwin) '' sed -i "$dev/lib/pkgconfig/Qt5Core.pc" \ -e "/^host_bins=/ c host_bins=$dev/bin" '' - - # Don't move .prl files on darwin because they end up in + # Don' move .prl files on darwin because they end up in # "dev/lib/Foo.framework/Foo.prl" which interferes with subsequent # use of lndir in the qtbase setup-hook. On Linux, the .prl files # are in lib, and so do not cause a subsequent recreation of deep @@ -265,8 +304,8 @@ stdenv.mkDerivation { homepage = http://www.qt.io; description = "A cross-platform application framework for C++"; license = with licenses; [ fdl13 gpl2 lgpl21 lgpl3 ]; - maintainers = with maintainers; [ qknight ttuegel ]; - platforms = platforms.linux; + maintainers = with maintainers; [ qknight ttuegel periklis ]; + platforms = platforms.unix; }; } |