diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2021-03-07 16:46:59 +0300 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2021-03-15 13:50:03 +0000 |
commit | 0d42ca4d0f8b0866b51ac9587f68a6550ca6d3fe (patch) | |
tree | 407d0af7565a4172bb1494eea7c2fa3ad5e22071 | |
parent | 481c2a0a47d9c97bfa3d09869591e47e37f75c0b (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.qbs | 41 | ||||
-rw-r--r-- | share/qbs/modules/protobuf/nanopb/nanopb.qbs | 23 |
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."; |