ctest automatically optimizes the order of (parallel) test execution based on
historic test case runtime via the COST property (see [0]), which can have a
significant impact on overall test run times. Sadly this feature is broken in
CMake < 4.0.0 for test cases that have spaces in their name (see [1]).
This commit is a backport of f24178f3 (which itself backports the upstream fix).
the patch was adapted slightly to apply cleanly to the older CMake version in
kirkstone. As repeated test runs are expected to mainly take place inside the
SDK, the patch is only applied to 'nativesdk' builds.
[0]: https://cmake.org/cmake/help/latest/prop_test/COST.html
[1]: https://gitlab.kitware.com/cmake/cmake/-/issues/26594
Reported-By: John Drouhard <john@drouhard.dev>
(From OE-Core rev: f6a160f7ea57af6dfeca003e6c05aa42419fb755)
Signed-off-by: Moritz Haase <Moritz.Haase@bmw.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
When `-pipe` is enabled, GCC passes data between its different
executables using pipes instead of temporary files. This leads to issues
when cmake attempts to infer compiler internals via the `-v` parameter
as each executable will print to `stderr` in parallel.
In turn this may lead to compilation issues down the line as for example
the system include directories could not be determined properly which
may then propagate to issues such as:
recipe-sysroot/usr/include/c++/11.3.0/cstdlib:75:15: fatal error:
stdlib.h: No such file or directory
| 75 | #include_next <stdlib.h>
| | ^~~~~~~~~~
| compilation terminated.
| ninja: build stopped: subcommand failed.
| WARNING: exit code 1 from a shell command.
Fix this stripping `-pipe` from the command line used to determine
compiler internals.
(From OE-Core rev: 8e2233fd0509b9f20c19d5006dd7ef0c2260bdba)
Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
As discussion in [YOCTO #14717] cmake contains a OEToolchainConfig.cmake
file to configure the toolchain correctly in cross-compile build for recipes
using cmake.
The variable CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES value updates incorrectly
during do_compile the code. Due to this getting sporadic error like below,
fatal error: stdlib.h: No such file or directory
| 75 | #include_next <stdlib.h>
| | ^~~~~~~~~~
| compilation terminated.
| ninja: build stopped: subcommand failed.
| WARNING: exit code 1 from a shell command.
As cmake already correctly initializes the variable from environment,
So we have to unset it in the toolchain file to avoid overwriting the
variable definition again.
(From OE-Core rev: 2b0b47fd0cafdb9de5025efda4140e11ea447afa)
Signed-off-by: aszh07 <mail2szahir@gmail.com>
Signed-off-by: Zahir Hussain <zahir.basha@kpit.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 5aeada5793af53e8c93940952d4f314474dca4c2)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
When building using an SDK, cmake complains that the target
architecture 'cortexa53-crypto' is unknown. The same build in bitbake
uses the target architecture 'aarch64'.
Set CMAKE_SYSTEM_PROCESSOR the same as for bitbake.
(From OE-Core rev: d877d5f07772ec4a05332068ddc03cf387313036)
Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d32a6225eefce2073a1cd401034b5b4c68351bfe)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
As discussied in [YOCTO #14717] cmake contains a OEToolchainConfig.cmake
file to configure the toolchain correctly in cross-compile build for recipes
using cmake. The CMAKE_ASM_FLAGS are the configuration are meant for assembly,
but the spelling is incorrect and the Flag is ASFLAGS for gcc and other compilers.
So this variable might neever have worked and it is better for
recipes to specify their own.
(From OE-Core rev: aeec7cc3081a7b21dc0e38b404547463796bfa0e)
Signed-off-by: Martin Beeger <martin.beeger@online.de>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
(cherry picked from commit 72729ffbab53f95ee9dd1bc22913d9b864495930)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The patch creates ${MULTIMACH_TARGET_SYS}-toolchain.cmake file
at ${SDK_INSTALL_DIR}/sysroots/${SDK_SYS}/usr/share/cmake/, which is
per-toolchain CMake toolchain file containing arch-specific values
and independent of OE environment variables.
The file gets created after installing SDK toolchain installer
ined by running "bitbake -c populate_sdk <image>".
The changes are similar to meson-setup.py which is used to
create arch-specific
${SDK_INSTALL_DIR}/sysroots/${SDK_SYS}/usr/share/meson/*-meson.cross
[YOCTO #14644]
Tested-by: Jan Dorniak <jaskij@gmail.com>
(From OE-Core rev: 42e68397ec74b3cd8ae5df45355c8f6254b48cd8)
Signed-off-by: Jagadeesh Krishnanjanappa <workjagadeesh@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
refresh 0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch
Changelog:
==========
* The :command:'while' command again ignores errors in condition evaluation
as CMake 3.21 and below did. This bug was fixed in 3.22.0, but exposed
errors in existing projects. The fix has been reverted to restore
compatibility. The fix may be restored in a future version of CMake
via a policy.
(From OE-Core rev: 146ceceaf81639085a82fd94d30ea84150a75e3a)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
As discussion in [YOCTO #14717] cmake contains a OEToolchainConfig.cmake
file to configure the toolchain correctly in cross-compile build for recipes
using cmake. The variable CMAKE_LDFLAGS_FLAGS is spelled incorrectly, cmake expects
CMAKE_SHARED_LINKER_FLAGS, CMAKE_STATIC_LINKER_FLAGS, CMAKE_EXE_LINKER_FLAGS and
CMAKE_MODULE_LINKER_FLAGS to be set instead. As cmake already correctly initializes
these from environment there is no need to specify the linker flags in the toolchain
file at all. So this just removes the variable, as its value was also set wrong.
(From OE-Core rev: 52e59a5b37f55905ee693a99f9ffc34ed41b4283)
Signed-off-by: Martin Beeger <martin.beeger@online.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Remove 0002-cmake-Prevent-the-detection-of-Qt5.patch
(patch purpose and failing scenarios unclear; disabling
is better done through configuration options which
are available for all of these items).
License-Update: copyright years
(From OE-Core rev: 6f3a4f224931866ab2e9758530efdb81d7ddb63d)
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Drop a patch which is no longer required as the issue has been fixed
upstream.
(From OE-Core rev: 5a6456bc0ded09d184987a70764ecb3c94be4ddd)
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
License-Update: only the first two lines contain licensing info
(From OE-Core rev: 72f86e4e986b70600a746eb219315b81b0367be3)
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Use path from CMAKE_CURRENT_LIST_FILE to load the cmake subscripts.
This allows the toolchain file to be chainloaded from another toolchain file.
(From OE-Core rev: 2d7597ee23b7c2adf40d77e8c35114a4d63aa854)
Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Patches have been refreshed and all of meta-oe and oe-core was sucessfully built.
(From OE-Core rev: 469bcfbfe25afd9c480c26f117b81d65cc305fbe)
Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The patches were refreshed with devtool.
I rebuilt all cmake recipes from poky and meta-oe without issue.
(From OE-Core rev: 022d642b0c8f464b451c543db50bb93012bce607)
Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The copyright date changed in the license file, thus the hash change.
CMake 3.14 fixes some issues with implicit include path that lead to
errors with gcc not finding "stdlib.h" etc in include_next.
(From OE-Core rev: ec2764aa4957b802ed2612dd7633aed5b941bfb0)
Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
All patches have been rebased on top of the 3.13.4 release.
I successfully built all CMake recipes in oe-core and meta-oe.
(From OE-Core rev: f40a5da14ec688f751d6394ce9a997578904fd8d)
Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
Cc: Otavio Salvador <otavio.salvador@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
I am not sure why we do this in the first place, but it is causing
cmake to erroneously pick up items from the native sysroot
when building for the target and the target item is missing, for example:
https://autobuilder.yoctoproject.org/typhoon/#/builders/59/builds/198/steps/7/logs/step2c
Note that for executable programs this variable is not referred to,
as set by
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
in the same file.
(From OE-Core rev: cd1c0a0631ad128b25e97f047750579caead051a)
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This updates CMake to the 3.12.1 stable release. All patches were
rebase on top of the new source file and all them applied without
changes.
The number of patches has changed as all them were applied on the Git
tree and re-exported, to avoid any fuzzy warnings.
License-Update: new contributor added in Copyright.txt
(From OE-Core rev: 439be401cd642937b45796489e8c10aa5238a963)
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Setting CMAKE_SYSROOT in the toolchain file allows CMake to correctly
remove user-provided system include directories pointing to
<sysroot>/usr/include. The mentioned projects failed with "stdlib.h:
No such file or directory #include_next <stdlib.h>".
(From OE-Core rev: cb42802f2fe1760f894a435b07286bca3a220364)
Signed-off-by: Urs Fässler <urs.fassler@bbv.ch>
Signed-off-by: Raphael Freudiger <raphael.freudiger@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
CMake, in it's infinite wisdom, when searching for libraries (using
find_library) will look inside the libraries PREFIX/lib, PREFIX/lib32, and
PREFIX/lib64. In a multilib SDK more than one of these will exist (potentially
all three) and obviously for a given build configuration only one of those is
valid. This search path is hard-coded deep inside CMake but by setting
CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX we can bypass it and set an explicit
lib<SUFFIX> to use.
Do this by writing ${baselib} into the environment file, and then stripping
"lib" from this to obtain the suffix in the cmake-specific environment script,
which is then read in the CMake toolchain.
(From OE-Core rev: 47160a8c51310f2b40cabf4c1910b5df6e0a15d6)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Patch the location in cmake where the toolchain file is loaded
to use the (new) OE_CMAKE_TOOLCHAIN_FILE variable to select a default
toolchain if no toolchain has been specified. The cmake alias is
removed.
The alternatives:
- shell alias fails when cmake is called indirectly (ex: a makefile
managing several projects which calls cmake for some of them)
because aliases are not inherited
- wrapper script that unconditionally adds "-D..." breaks cmake's
build tests and many other things as it causes cmake to believe it
should be configuring things when it should not be. For example,
`cmake -DCMAKE_TOOLCHAIN_FILE=... --build .` does not work (note
that this also breaks people directly using `cmake --build .` with
the current alias).
(From OE-Core rev: da60be3768e7183794d63548166d107dbd0a4973)
Signed-off-by: Cody P Schafer <dev@codyps.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This updates CMake to the current stable release and drop many
backported patches in the process.
(From OE-Core rev: d942ec4ff649782d22afe49fd48839dbbfedc871)
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The 3.10.1 version has been in Dec 13, 2017, and has a great set of
features and improvements since the last upgrade.
The release notes of 3.10 release is available at:
https://cmake.org/cmake/help/v3.10/release/3.10.html
Patches updates:
- cmake-Prevent-the-detection-of-Qt5.patch: so it replaces the sed
command calls inside the cmake.inc
- 0001-FindCUDA-Use-find_program-if-find_host_program-is-no.patch:
merged upstream, so it has been removed.
- support-oe-qt4-tools-names.patch: rebased.
License-checksum-change: added new contributors
(From OE-Core rev: 9e58926f1cea9d5cb18cb923855d1ae98f88a8ac)
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The missing underscore makes CMake define a new variable named "CMAKE"
with the contents "ASM_FLAGS ${CMAKE_C_FLAGS}" instead of a variable
named "CMAKE_ASM_FLAGS" with contents equal to "CMAKE_C_FLAGS". It seems
clear that the intention was to assign "CMAKE_ASM_FLAGS".
CMake uses variables named "CMAKE_<LANG>_FLAGS" for defining default
compiler flags for a given language <LANG>. Leaving this flag unset may
have unintended consequences. Not doing so is however not an error as
far as CMake is concerned so it is silently accepted.
(From OE-Core rev: 03a4dd085e3be2821eff5a1a1e7e96b809465565)
Signed-off-by: Øystein Walle <ow@datarespons.no>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
CMake does not define the `find_host_program` command we've
been using in the cross-compiling code path. It was
provided by a widely used Android toolchain file. For
compatibility, continue to use `find_host_program` if
available, but otherwise use just `find_program`.
(From OE-Core rev: e5f4e0df64531e2296bb1f5002eb106c3eec61e3)
Signed-off-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
There was a set of changes, those are:
- CMake now requires librhash for build and as there is no other
users in OE-Core we make it use its internal copy instead;
- Copyright.txt checksum has change due new contrubutors and 2017
year additions;
- Patch avoid-gcc-warnings-with-Wstrict-prototypes.patch was removed
as it is not need anymore;
- Patch 0001-KWIML-tests-Remove-format-security-from-flags.patch was
removed as it is included in this release.
(From OE-Core rev: cc75f693bde412edd0a1aa4fd4e92fb29b492b76)
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Backport build fix that removes -Wformat-security for specific tests.
Enable "-Wformat-security" for cmake in security_flags.inc.
(From OE-Core rev: b00f9c77ebd211578ba133c28abcbc5752305e25)
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The previous string manipulations would result in the wrong string being used
for machines such as intel-corei7-64 as the sysroot was split at the first
hyphen (so would result in corei7 instead of corei7-64).
Change the logic so that it looks for processor-distro-os and uses the whole of
the processor field.
(From OE-Core rev: ce24958d644f2218d5415be574a5b7e1ee8c9b2d)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The other CMAKE_FIND_ROOT_PATH_MODE_* variables were already set to ONLY, but
PACKAGE was left out. Fix this so that cmake doesn't look on the host for cmake
modules when it should only be looking in the target sysroot.
(From OE-Core rev: 2df2372a31b02eab933e4a7aa6d5f8ca48e02c04)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Adjust LIC_FILES_CHKSUM due to changes in the Copyright date.
No change to the license text.
Remove the upstreamed patch:
1. 0001-Add-NIOS2-CPU-support.patch
(From OE-Core rev: 05bce1fda9b24f939d211516ad73984ad29ba4df)
Signed-off-by: Maxin B. John <maxin.john@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
It hasn't been used since June 2015 when upgraded the recipe, this patch
was used for crosscompiling, now the crosscompile works well without it,
so remove it.
(From OE-Core rev: b99eec460cb14dce3580b8f5da6ce8b97d2078c5)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Patches "qt4-fail-silent.patch" and "support-oe-qt4-tools-names.patch"
were adapted in order to fit to CMake 3.2.2 (refer to the commit
message in the respective patch for details).
Patch "cmake-2.8.11.2-FindFreetype.patch" was dropped since it was
rejected upstream and its functionality otherwise implemented in the
meantime.
(From OE-Core rev: c171909352b5ed92166857b0bbcd901ae0f74996)
Signed-off-by: Moritz Blume <moritz.blume@bmw-carit.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This patch adds a flexible way to configure the CMake in SDKs. It adds
a toolchain configuration script which supports subscripts for
extensions, as for example Qt5.
(From OE-Core rev: 4143f3b0ce0d0c52f5b0babc1bb16ac0ac9610eb)
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
In commit 4bee0a93ed985b38c6b4eb605d8e16f5d7c82d51 I introduced an
unnecessary patch to do something that can easily be done without
patching.
The argument to disable building ccmake can be passed to configure provided
it is preceded by "--".
(From OE-Core rev: eaf176eaabb4c558ad76512b30b28ec97fd90bc6)
Signed-off-by: Mike Crowe <mac@mcrowe.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The bootstrapped cmake is called in such a way that it will automatically
enable building ccmake if curses is found. This tool isn't particularly
useful to us and it will cause build problems if ncurses-native is built in
parallel with cmake-native so let's just pass -DBUILD_CursesDialog=0 to
disable the feature altogether as the non-native cmake does.
Unfortunately this requires patching the bootstrap script since there
appears to be no way to get this option through.
(From OE-Core rev: 4bee0a93ed985b38c6b4eb605d8e16f5d7c82d51)
Signed-off-by: Mike Crowe <mac@mcrowe.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* since last freetype upgrade cmake cannot detect it
* e.g. webkit-efl requires freetype and is failing because of this
(From OE-Core rev: 0cd58eb1ca29bdc53f623aba1f761b97cfe31fb4)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
When building cmake for native, we don't use the system libraries and
thus cmake builds its own internal version of libarchive; this requires
zlib, bzip2, and e2fsprogs. We can add to DEPENDS for the two former
libraries and patch out the latter.
(From OE-Core rev: fe6ca47a256b775e1aa5750b9dd31e27230cf781)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
If the host Qt installation exists but is incomplete or the installed
qmake architecture doesn't match that of the Qt libraries, cmake was
failing at do_configure. cmake 2.8.10 failed silently here so we should
make 2.8.11 do the same.
Fixes [YOCTO #4565].
(From OE-Core rev: 2bf46fbd25e1a3a44d556758f536fa26c44edb03)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Rebased support-oe-qt4-tools-names as some of the changes where
added in the upstream code.
(From OE-Core rev: 13399264e987b698b120688dc5018adb3fa8522d)
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>