The Boost::boost style library dependencies don't work
on some CMake versions (couldn't find library -lBoost::boost)
Use ${Boost_INCLUDE_DIRS} in the target_include_dirs() instead.
This is useful when working on code paths that rely on KiWay
communications, since you can run and debug the kicad application
without needing to run an install task first.
Provides a place to record work that is pending due to
library, compiler or language restrictions.
Because some of this work will be pending for several years
until supported distros support the relevant versions, having
this centrally documented prevents it being forgotten.
Also includes current distro versions for extant "LTS"
distros that are likely to be the distros holding back
library versions.
Only includes things we currently actually do work around
in the code, or things that are direct C++ replacements
(e.g. Boost libraries being adopted to C++).
This is as opposed to more opinion-based "we should
do it this way, it's better" things, which should be
proposed for discussion first.
In OpenSSL 1.1.0 and newer, the locking callback macros do nothing.
This causes unused warnings for the static function lock_callback.
Ignore this function on newer OpenSSL builds, but keep
the infrastructure for now.
When OpenSSL's min version is 1.1 or greater, all the locking
infrastructure can be removed.
In the failure case, the "makeType" is uninitialised. In a non-debug
build, wxFAIL will compile out and the uninitialised behaviour will
happen silently. In a debug build, it'll assert, and then do the
uninitialised behaviour anyway.
Continue explicity to avoid this.
This allows CI tools to get machine-readable test reports.
By default, this is off - when you test normally, you probably
want the regular console spew.
Boost tests use the in-built Boost test command line options.
The Python tests take an --xml parameter and output the tests
there.
If neither OCC or OCE is available, the kicad2step_lib
target is not created, so the unit tests also cannot
be built. Detect missing libs and abort the test
target creation in that case.
Reverts (and fixes): 3a8ffd66c
Add a new CMake target, qa_all, which builds all
tests, tools and their deps.
Then, when KICAD_BUILD_QA_TESTS is set OFF, remove tests
and tools from the ALL target, so `make all` doesn't include
these builds.
This means even when you turn the KICAD_BUILD_QA_TESTS option
off, you still have the option to:
* Build individual tests: `make qa_pcbnew`
* Build all tests: `make qa_all_tests`
* Build all tools: `make qa_all_tools`
* Build all QA executables: `make qa_all`
This also will provide a place to hang extra logic for test routine
wrangling (e.g. by CI tools)
Update the "Compiling KiCad" dev docs.
Also, CMakeModules .cmake files should not be excluded from git
Single pad nets deletion in dry run was incorrect when a new footprint was added, because in dry run it is not actually added,
and the single pad nets deletion does not see these new pads, and can (incorrectly) delete some nets.
Prevent a divide-by-zero bug in SHAPE_ARC::ConvertToPolyline.
When the radius is zero, just use the initial angle (it makes
no different anyway, the result is the centre point, which is
the start point.
Add unit test of SHAPE_ARC::ConvertToPolyline.
This function has a bug when the arc is of zero radius. This
test shows the bug, but does not fix it yet.
This allows to feed any data directly into the sexpr parser. This can be
used for:
* Benchmarking, profiling and optimisation
* Fuzz testing
* Debugging
As an example, it demonstrates that a 15MB kicad PCB file (the CIAA
motherboard project) takes 1.5s to parse, and uses 140MB of heap
allocation within the Parse() method (using Valgrind massif).
This adds a test to the recent GetLayerName function, and moves
it to the base.h file for re-use for any code that needs a
layer name.
This test covers the case that caused lp:1824750 [1].
[1]: https://bugs.launchpad.net/kicad/+bug/1824750
The SEXPR class is a useful general-purpose S-Expression library
class and can (maybe) be used else where. It also should get
test coverage, as even if noone else uses it, it's critical for the
kicad2step exporter.
Also add some test coverage for some kicad2step routines. For now,
they're not useful outside kicad2step, but they are at least a useful
reference for S-Expression parsing.
When utilizing the standard iterator container, we may have polygons
with an empty outline (these are generated by gerbview to pcbnew). This
should register as the end of the iterator to prevent dereferencing