aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2021-03-07 16:46:59 +0300
committerIvan Komissarov <ABBAPOH@gmail.com>2021-03-15 13:50:03 +0000
commit0d42ca4d0f8b0866b51ac9587f68a6550ca6d3fe (patch)
tree407d0af7565a4172bb1494eea7c2fa3ad5e22071
parent481c2a0a47d9c97bfa3d09869591e47e37f75c0b (diff)
protobuf: fix accessing undefined object
Always execute Probes to find files protobuf libs and headers even when the user passes path to those manually. This is required for the correct search of different library variants. This amends 87fdf5002. Change-Id: Ic7b9368b2b17925da33fd16299e31fd016043466 Reviewed-by: Kai Dohmen <psykai1993@googlemail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--share/qbs/modules/protobuf/cpp/protobufcpp.qbs41
-rw-r--r--share/qbs/modules/protobuf/nanopb/nanopb.qbs23
2 files changed, 38 insertions, 26 deletions
diff --git a/share/qbs/modules/protobuf/cpp/protobufcpp.qbs b/share/qbs/modules/protobuf/cpp/protobufcpp.qbs
index 50caf058a..b443b4dbf 100644
--- a/share/qbs/modules/protobuf/cpp/protobufcpp.qbs
+++ b/share/qbs/modules/protobuf/cpp/protobufcpp.qbs
@@ -7,20 +7,21 @@ import "../protobufbase.qbs" as ProtobufBase
import "../protobuf.js" as HelperFunctions
ProtobufBase {
- property string includePath: includeProbe.path
- property string libraryPath: libraryProbe.path
+ property string includePath: includeProbe.found ? includeProbe.path : undefined
+ property string libraryPath: libraryProbe.found ? libraryProbe.path : undefined
property bool useGrpc: false
- property string grpcIncludePath: grpcIncludeProbe.path
- property string grpcLibraryPath: grpcLibraryProbe.path
+ property string grpcIncludePath: grpcIncludeProbe.found ? grpcIncludeProbe.path : undefined
+ property string grpcLibraryPath: grpcLibraryProbe.found ? grpcLibraryProbe.path : undefined
readonly property string _libraryName: {
var libraryName;
- if (libraryProbe.found)
+ if (libraryProbe.found) {
libraryName = FileInfo.baseName(libraryProbe.fileName);
- if (libraryName.startsWith("lib"))
- libraryName = libraryName.substring(3);
+ if (libraryName.startsWith("lib"))
+ libraryName = libraryName.substring(3);
+ }
return libraryName;
}
@@ -36,9 +37,9 @@ ProtobufBase {
cpp.libraryPaths: {
var result = [];
- if (libraryPath)
- result.push(libraryPath);
- if (useGrpc && grpcLibraryPath)
+ if (libraryProbe.found)
+ result.push(libraryProbe.path);
+ if (useGrpc && grpcLibraryProbe.found)
result.push(grpcLibraryPath);
return result;
}
@@ -54,9 +55,9 @@ ProtobufBase {
}
cpp.includePaths: {
var result = [outputDir];
- if (includePath)
+ if (includeProbe.found)
result.push(includePath);
- if (useGrpc && grpcIncludePath)
+ if (useGrpc && grpcIncludeProbe.found)
result.push(grpcIncludePath);
return result;
}
@@ -96,6 +97,8 @@ ProtobufBase {
Probes.IncludeProbe {
id: includeProbe
names: "google/protobuf/message.h"
+ platformSearchPaths: includePath ? [] : base
+ searchPaths: includePath ? [includePath] : []
}
Probes.LibraryProbe {
@@ -104,33 +107,39 @@ ProtobufBase {
"protobuf",
"protobufd",
]
+ platformSearchPaths: libraryPath ? [] : base
+ searchPaths: libraryPath ? [libraryPath] : []
}
Probes.IncludeProbe {
id: grpcIncludeProbe
pathSuffixes: "grpc++"
names: "grpc++.h"
+ platformSearchPaths: grpcIncludePath ? [] : base
+ searchPaths: grpcIncludePath ? [grpcIncludePath] : []
}
Probes.LibraryProbe {
id: grpcLibraryProbe
names: "grpc++"
+ platformSearchPaths: grpcLibraryPath ? [] : base
+ searchPaths: grpcLibraryPath ? [grpcLibraryPath] : []
}
validate: {
HelperFunctions.validateCompiler(compilerName, compilerPath);
- if (!HelperFunctions.checkPath(includePath))
+ if (!includeProbe.found)
throw "Can't find cpp protobuf include files. Please set the includePath property.";
- if (!HelperFunctions.checkPath(libraryPath))
+ if (!libraryProbe.found)
throw "Can't find cpp protobuf library. Please set the libraryPath property.";
if (useGrpc) {
if (!File.exists(grpcPluginPath))
throw "Can't find grpc_cpp_plugin plugin. Please set the grpcPluginPath property.";
- if (!HelperFunctions.checkPath(grpcIncludePath))
+ if (!grpcIncludeProbe.found)
throw "Can't find grpc++ include files. Please set the grpcIncludePath property.";
- if (!HelperFunctions.checkPath(grpcLibraryPath))
+ if (!grpcLibraryProbe.found)
throw "Can't find grpc++ library. Please set the grpcLibraryPath property.";
}
}
diff --git a/share/qbs/modules/protobuf/nanopb/nanopb.qbs b/share/qbs/modules/protobuf/nanopb/nanopb.qbs
index 0a5e4e807..ec8df7db3 100644
--- a/share/qbs/modules/protobuf/nanopb/nanopb.qbs
+++ b/share/qbs/modules/protobuf/nanopb/nanopb.qbs
@@ -7,17 +7,18 @@ import "../protobufbase.qbs" as ProtobufBase
import "../protobuf.js" as HelperFunctions
ProtobufBase {
- property string includePath: includeProbe.path
- property string libraryPath: libraryProbe.path
+ property string includePath: includeProbe.found ? includeProbe.path : undefined
+ property string libraryPath: libraryProbe.found ? libraryProbe.path : undefined
property string pluginPath: pluginProbe.filePath
property string pluginName: "protoc-gen-nanopb"
readonly property string _plugin: "protoc-gen-nanopb=" + pluginPath
readonly property string _libraryName: {
var libraryName;
- if (libraryProbe.found)
+ if (libraryProbe.found) {
libraryName = FileInfo.baseName(libraryProbe.fileName);
- if (libraryName.startsWith("lib"))
- libraryName = libraryName.substring(3);
+ if (libraryName.startsWith("lib"))
+ libraryName = libraryName.substring(3);
+ }
return libraryName;
}
@@ -25,8 +26,8 @@ ProtobufBase {
cpp.libraryPaths: {
var result = [];
- if (libraryPath)
- result.push(libraryPath);
+ if (libraryProbe.found)
+ result.push(libraryProbe.path);
return result;
}
cpp.dynamicLibraries: {
@@ -37,7 +38,7 @@ ProtobufBase {
}
cpp.includePaths: {
var result = [outputDir];
- if (includePath)
+ if (includeProbe.found)
result.push(includePath);
return result;
}
@@ -79,6 +80,8 @@ ProtobufBase {
"protobuf-nanopb",
"protobuf-nanopbd",
]
+ platformSearchPaths: libraryPath ? [] : base
+ searchPaths: libraryPath ? [libraryPath] : []
}
Probes.BinaryProbe {
@@ -89,9 +92,9 @@ ProtobufBase {
validate: {
HelperFunctions.validateCompiler(compilerName, compilerPath);
- if (!HelperFunctions.checkPath(includePath))
+ if (!includeProbe.found)
throw "Can't find nanopb protobuf include files. Please set the includePath property.";
- if (!HelperFunctions.checkPath(libraryPath))
+ if (!libraryProbe.found)
throw "Can't find nanopb protobuf library. Please set the libraryPath property.";
if (!HelperFunctions.checkPath(pluginPath))
throw "Can't find nanopb protobuf plugin. Please set the pluginPath property.";