Clang code model can break if CMake project uses precompiled headers.
QtCreator will make a copy of the precompiled header, this way it
will not conflict with the build system one.
Ammends 888ea6bbbb
Fixes: QTCREATORBUG-24945
Fixes: QTCREATORBUG-25213
Change-Id: I149fc416cd047683d095758a024de47c7baf681c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This basically extends the existing hack to cover one more case. It may
very well break again in some other context, in which case we will
remove the custom definitions entirely, as the reason they exist in the
first place does not seem terribly relevant.
Fixes: QTCREATORBUG-24580
Change-Id: I757ac23682c81c647a5d968fa549baac5716010c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Clang++ 11 has __cpp_constexpr_in_decltype
Change-Id: I450a79f2af8cd6aca51b95b11b3c06b9682c0418
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
These are only necessary for the code model and can prevent clazy from
finding certain issues.
Fixes: QTCREATORBUG-24845
Change-Id: I04ba6703812918c39ebbde1dbac5af85fe18622d
Reviewed-by: David Schulz <david.schulz@qt.io>
For GCC it can be deduced from the compiler flags, so no correction is
needed.
For MSVC it can be deduced from the detected defines.
Amends 26693e8212.
Change-Id: Ie4850f328a2afdb3e5158c58f8c30a2644d9c592
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
The getClangResourceDirAndVersion() function in ClangTools could return
the actual resource dir or the include dir, depending on the input. This
mistake happened because of misleading names spread all around the code.
Now the function returns what it says, and the other names are accurate
as well.
Change-Id: I0a8600857ee7b9fafb16256e0d1ad203ac3273d2
Reviewed-by: David Schulz <david.schulz@qt.io>
Built-in compiler macros are normally not passed to the code model,
because of potential conflicts with clang. However, in the case of custom
toolchains, these macros are provided by the user for the explicit
purpose of making them known to the code model.
Another exception are the bare metal toolchains, for which we now make
sure we won't get out of sync when new ones are added.
Fixes: QTCREATORBUG-24367
Change-Id: I2a0458d9132fdff15eb9adfcb2c06d7ef72508bc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Prevent mingw from trying to #include_next a private header from a path
we cannot add to our list of includes.
Fixes: QTCREATORBUG-24251
Task-number: QTCREATORBUG-24027
Change-Id: I18a9db130b9c2265cd208c3506d08d2e1c4cee45
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
The coreplugin/id.h header is kept for downstream for now.
Change-Id: I8c44590f7b988b3770ecdc177c40783e12353e66
(cherry picked from commit 430a33dcd9)
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This reverts commit b114f77d8a as
"--driver-mode=cl" apparently still disables exceptions.
Task-number: QTCREATORBUG-23000
Change-Id: I9c49d971fafda5e1aca8445f8921e50f323d368f
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
...or if requested with QTC_CLANG_USE_TOOLCHAIN_MACROS=1.
Change-Id: I6d2f35b69393a7039271cc651aa514cdb686522e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
If you build Qt Creator with CMake version 3.16, you will have
precompile headers which will break code model.
Change-Id: I679936faed39ecfedb9ebb5fb553449a9f5ea29d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
We always set the target explicitly (in a certain way), so exclude the
target arguments coming from the build system and the (possibly manually
specified) platform codegen flags of the toolchain.
Change-Id: I74bbec67f5960f05b50cf9c5aa11875c71a5161f
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Leave the function addExtraCodeModelFlags() around as it's used by
ClangPchManager::ProjectUpdater::toolChainArguments().
This allows us to filter out excess target arguments in a follow-up
change.
Change-Id: I742d713dd1ca6c391ba77c52555dcf4e94cc2ff9
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Unknown command line options starting with / are now transformed
into commands starting with -, which will cause unknown commands
warnings in libclang.
The / commands cause errors because they are treated as missing
files.
Fixes: QTCREATORBUG-22871
Change-Id: I75f7878ab6a7951df24c954ccff1c298ea65f839
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Clang cannot handle gcc pch files which are close to the forced
include header.
Fixes: QTCREATORBUG-22888
Change-Id: I0d678a889d1fb62bf3c6850277e13271efb91eea
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
QtVersion to utils/cpplanguage_details.h which already contains similar
flags.
BuildTargetType to ProjectExplorer, next to BuildTargetInfo (but not in the
same header to not pull that in everywhere).
Removes dependency on ProjectPart from RawProjectPart.
Change-Id: I5791065e4266f20c2657ee4b1b594df04b238a1c
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
We optimal indexer is only reindexing if the index would be changed. This
patch is a step in that direction. We only reindex now if the file or
project has changed. It fixes some typos too.
Task-number: QTCREATORBUG-21150
Change-Id: I6ea1c13282fbcd70253b9b2939aed37580dbd160
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Do not use CompilerOptionsBuilder anymore because we don't
need much tweaking for projectPart data and can do it better
specifically for the generator.
Fixes: QTCREATORBUG-21936
Change-Id: I00ad872c703598a9a88af29399b428520dd5cb3b
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Filter out the PCH flags when detecting macros and language version.
Fixes: QTCREATORBUG-21860
Change-Id: I25c63f1409c16db3623d1c8f43ffd5d2bd0f6748
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
...for debugging and workarounds if necessary.
Change-Id: If76cddb59fbd8e96f42d141bd5e5d03cd88ab30f
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
- filter out include paths from command line flags
- do not search for MinGW parent toolchain in Android toolchain
Change-Id: I5f2566aa0bd10eb939380193e64e17b000743b73
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
We need to provide built-in includes only when we use tweaked headers.
Also let's require Clang resource directory because it has to be
placed on the specific position inside the built-in header paths.
Change-Id: Id581238660c680725201de759216cf33f69f6cc7
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Like you can see in the task numbers this patch is touching many different
areas. So I will only touch the main parts. It is using a clang action
instead of an extra process which will be enabling the handling of
generated files in PCHs. The flags from the project part are now not
anymore transformed in a command line but they are saved in the container
semantically aware so that they can later be merged. Most of this patch is
simply polishing of other patches.
Task-number: QTCREATORBUG-21346
Task-number: QTCREATORBUG-21380
Task-number: QTCREATORBUG-21382
Task-number: QTCREATORBUG-21383
Task-number: QTCREATORBUG-21693
Task-number: QTCREATORBUG-21778
Change-Id: I9b0c02d8149b554254e819448fbc61eeaa5b7494
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
We do not set file kind when building an initial command line for
libclang and this assert triggers all the time.
Change-Id: If607cf68ca5bcd788abe77875787bed24db57573
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
The known cases provide enough flags not to require
toolchain defines.
Change-Id: Ia7e08a90eca6ea9474db40683ac1e63236f8643d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Clang has MSVC compatible mode which works with MSVC style command line
flags.
When possible use the same flags (-I, -D, -U, etc.) and in other cases
either replace by MSVC analog (for example use /FI instead of -include)
or pass the argument with '/clang:' prefix (requires
https://reviews.llvm.org/D53457).
Change-Id: I95f33bed5dc8d9493895ed8d4359cdd70fc774b8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Rely on clang to do the "right thing" with them.
Change-Id: I44adf2cd5c61549896da3fc9b7c35c2fb0142060
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
We want to use them in the backend processes too so it's nice to share them
in Utils. A concrete size was added too because they should be serialized.
Change-Id: Id5eb8f46643d5159f034fc9559f68a08d7e5847a
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
The fix for MSVC2013 undefined clang macros to fix some
internal Qt stuff failing in Qt 5.7.
Now we know exactly which MSVC version is used and can
ignore this fix for newer versions.
Fixes: QTCREATORBUG-16439
Fixes: QTCREATORBUG-21685
Change-Id: Ie2844428c39d72d212198ee2dd6841420a464974
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>