qtbase: Set cmakeFlags and NIX_CFLAGS_COMPILE in setupHook

This commit is contained in:
Thomas Tuegel 2019-10-12 12:47:55 -05:00
parent b80ce0aeca
commit 7744998f04
No known key found for this signature in database
GPG Key ID: 22CBF5249D4B4D59
5 changed files with 41 additions and 12 deletions

View File

@ -145,7 +145,7 @@ let
patches = patches.qtbase;
inherit bison cups harfbuzz libGL;
withGtk3 = true; inherit dconf gtk3;
inherit developerBuild decryptSslTraffic;
inherit debug developerBuild decryptSslTraffic;
};
qtcharts = callPackage ../modules/qtcharts.nix {};

View File

@ -149,7 +149,7 @@ let
patches = patches.qtbase;
inherit bison cups harfbuzz libGL;
withGtk3 = true; inherit dconf gtk3;
inherit developerBuild decryptSslTraffic;
inherit debug developerBuild decryptSslTraffic;
};
qtcharts = callPackage ../modules/qtcharts.nix {};

View File

@ -1,3 +1,14 @@
if [[ -n "${__nix_qtbase-}" ]]; then
# Throw an error if a different version of Qt was already set up.
if [[ "$__nix_qtbase" != "@dev@" ]]; then
echo >&2 "Error: detected mismatched Qt dependencies:"
echo >&2 " @dev@"
echo >&2 " $__nix_qtbase"
exit 1
fi
else # Only set up Qt once.
__nix_qtbase="@dev@"
qtPluginPrefix=@qtPluginPrefix@
qtQmlPrefix=@qtQmlPrefix@
qtDocPrefix=@qtDocPrefix@
@ -5,6 +16,20 @@ qtDocPrefix=@qtDocPrefix@
. @fix_qt_builtin_paths@
. @fix_qt_module_paths@
# Disable debug symbols if qtbase was built without debugging.
# This stops -dev paths from leaking into other outputs.
if [ -z "@debug@" ]; then
NIX_CFLAGS_COMPILE="${NIX_CFLAGS_COMPILE-}${NIX_CFLAGS_COMPILE:+ }-DQT_NO_DEBUG"
fi
# Integration with CMake:
# Set the CMake build type corresponding to how qtbase was built.
if [ -n "@debug@" ]; then
cmakeBuildType="Debug"
else
cmakeBuildType="Release"
fi
providesQtRuntime() {
[ -d "$1/$qtPluginPrefix" ] || [ -d "$1/$qtQmlPrefix" ]
}
@ -19,7 +44,12 @@ export QMAKEPATH
QMAKEMODULES=
export QMAKEMODULES
declare -Ag qmakePathSeen=()
qmakePathHook() {
# Skip this path if we have seen it before.
# MUST use 'if' because 'qmakePathSeen[$]' may be unset.
if [ -n "${qmakePathSeen[$1]-}" ]; then return; fi
qmakePathSeen[$1]=1
if [ -d "$1/mkspecs" ]
then
QMAKEMODULES="${QMAKEMODULES}${QMAKEMODULES:+:}/mkspecs"
@ -34,7 +64,12 @@ envBuildHostHooks+=(qmakePathHook)
# package depending on the building package. (This is necessary in case
# the building package does not provide runtime dependencies itself and so
# would not be propagated to the user environment.)
declare -Ag qtEnvHostTargetSeen=()
qtEnvHostTargetHook() {
# Skip this path if we have seen it before.
# MUST use 'if' because 'qmakePathSeen[$]' may be unset.
if [ -n "${qtEnvHostTargetSeen[$1]-}" ]; then return; fi
qtEnvHostTargetSeen[$1]=1
if providesQtRuntime "$1" && [ "z${!outputBin}" != "z${!outputDev}" ]
then
propagatedBuildInputs+=" $1"
@ -64,3 +99,5 @@ postPatchMkspecs() {
if [ -z "${dontPatchMkspecs-}" ]; then
postPhases="${postPhases-}${postPhases:+ }postPatchMkspecs"
fi
fi

View File

@ -9,16 +9,6 @@ args:
let
args_ = {
NIX_CFLAGS_COMPILE = toString (
optional (!debug) "-DQT_NO_DEBUG"
++ lib.toList (args.NIX_CFLAGS_COMPILE or []));
cmakeFlags =
(args.cmakeFlags or [])
++ [
("-DCMAKE_BUILD_TYPE=" + (if debug then "Debug" else "Release"))
];
enableParallelBuilding = args.enableParallelBuilding or true;
nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ wrapQtAppsHook ];

View File

@ -22,6 +22,7 @@
libGL,
buildExamples ? false,
buildTests ? false,
debug ? false,
developerBuild ? false,
decryptSslTraffic ? false
}:
@ -39,6 +40,7 @@ stdenv.mkDerivation {
name = "qtbase-${version}";
inherit qtCompatVersion src version;
inherit debug;
propagatedBuildInputs =
[