From 4035c45e58896329e5b8b72913ff7f30d387c3dc Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 27 Apr 2018 09:11:48 +0200 Subject: shiboken: Accept relative file name as C++ header Relative file names cause Clang not to find them since they are included by a temporary header file. Check and convert to an absolute path via QFileInfo. Change-Id: Ie87b4d2a6fcf5d98062a8a40a3eccbbb9513c62e Reviewed-by: Cristian Maureira-Fredes Reviewed-by: Alexandru Croitor --- sources/shiboken2/generator/main.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'sources/shiboken2') diff --git a/sources/shiboken2/generator/main.cpp b/sources/shiboken2/generator/main.cpp index b787d9f7e..1447baf2e 100644 --- a/sources/shiboken2/generator/main.cpp +++ b/sources/shiboken2/generator/main.cpp @@ -544,6 +544,12 @@ int main(int argc, char *argv[]) } QString cppFileName = argsHandler.removeArg(QLatin1String("arg-1")); + const QFileInfo cppFileNameFi(cppFileName); + if (!cppFileNameFi.isFile() && !cppFileNameFi.isSymLink()) { + errorPrint(QLatin1Char('"') + cppFileName + QLatin1String("\" does not exist.")); + return EXIT_FAILURE; + } + QString typeSystemFileName = argsHandler.removeArg(QLatin1String("arg-2")); QString messagePrefix = QFileInfo(typeSystemFileName).baseName(); if (messagePrefix.startsWith(QLatin1String("typesystem_"))) @@ -579,7 +585,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - extractor.setCppFileName(cppFileName); + extractor.setCppFileName(cppFileNameFi.absoluteFilePath()); extractor.setTypeSystem(typeSystemFileName); if (!extractor.run()) { errorPrint(QLatin1String("Error running ApiExtractor.")); -- cgit v1.2.3