Currently, the format enforces single lines when possible, but does
not enforce readable column-based alignment (and, moreover, *removes*
such manually added alignment:
switch( m_orientation )
{
case PIN_RIGHT: m_orientation = PIN_UP; break;
case PIN_UP: m_orientation = PIN_LEFT; break;
}
Change this to multi-line by default:
switch( m_orientation )
{
case PIN_RIGHT:
m_orientation = PIN_UP;
break;
case PIN_UP:
m_orientation = PIN_LEFT;
break;
}
If the developer wishes for column-aligned single-line cases, this
is permitted, but much be done manually:
switch( m_orientation )
{
case PIN_RIGHT: m_orientation = PIN_DOWN; break;
case PIN_UP: m_orientation = PIN_RIGHT; break;
}
CHANGE: the _clang-format file to reflect this, and add note about
manual override in the dev docs.
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.
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.
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
This allows setting the config dir at build time, providing packagers a
method of controlling where the configuration files are placed.
Fixes: lp:1780601
* https://bugs.launchpad.net/kicad/+bug/1780601
The keeps all the formatting config together in the Git ecosystem
and keeps the config on a per-repo basis, unless the user explicitly
sets it --global.
Keep the old env var behaviour for now for backwards compatibility.
Add a .gitattributes files to provide a place to store file
attributes. Add a custom attribute for files that should be under
KiCad style guidelines.
Exclude generated files from the style enforcement. So far:
* bitmap .cpp files
* wxFormBuilder base classes
* Lemon grammars
It's now trivial to add the 'generated' attribute to any such
file.
Putting this into .gitattributes also means it can be retreived
programmatically, by other scripts, git alaises or on the command
line.
Use the attributes to provide a utility script to show or apply
formatting to controlled files (plain git clang-format won't
pick up our custom git attributes). Add details for the script in
the dev docs.
Also modiify the check-format hook to follow the .gitattributes
and only apply to cached (staged for commit) changes. Then you
won't be stopped committing because of bad formatting in unstaged
changed, or uncontrolled files.
Concept and some aspects of the implementation inspired by
CMake commit d5f39a56 [1].
[1]: d5f39a56a4
tool
Apparently curly brace escaping in a list does not work with Doxygen's
markdown support which caused everything after the windows install path
to be removed from the output build. I just fell back to the windows
environment variable expansion character (%) and that resolved the issue.
This can be used for "advanced" options which are for developers
to use for feature-flags and other configuration. Run time config
has some advantages over preprocessor defines:
* Can be changed without recompilation
* Sensitive to XDG_CONFIG_DIR, so flipping configs is easy
* Better compiler coverage (less conditionally compiled code means
less chance to break a different configuration). Also better
analysis coverage.
* Type safe config params
* Centralised documentation: it's in doxygen, in one place
No advanced config should be required by a general users. If a general
user does use one of these configs, it's probably because:
* There is a bug and one of these configs is a workaround
* A config in here is generally useful and should be moved into the
relevant application config and given UI.
For now, the config is read-only, and is read from the
"kicad_advanced" config file in the normal config dir.
This is done to avoid a big chunk of conditionally-compiled code
in the middle of the event function.
Also separates the zoom logic from the WX_VIEW_CONTROLS object
and isolates it in a separate class behind a clearer interface.
Add some simple tests for sane steps on GTK+3-sized scroll
steps.
This includes:
* Linkage against the Boost unit test libs
* Configuration of the Boost libs
* A place for common generics "extras" for unit test harnesses
including
* A simple way to allow "expected-failure" tests (without
breaking Boost < 1.58, e.g. Ubuntu LTS)
* Moving some simple numeric predicates from the geom tests
to the utils library.
Expand unit test docs to describe the expected failures macro.
Add a few COLOR4D tests, including one with expected failures due
to a pre-existing bug. This will be fixed in a follow-up commit.
This adds a pre-commit hook to warn of any style errors.
Also adds a 'hook-chain' script to simplify future hooks.
Add dev-doc note about how to use the formatter.
This adds a test program which can be used to test the
parsing of a given KiCad PCB file. This interface is
useful for both manual or automated debugging of given
files, as well as providing an interface suitable for
fuzz-testing tools.
Also adds to the testing docs to detail how fuzzing can
be used.
Also moves some useful re-usable code from io-benchmark
to a new library qa_utils, which can contain code that
isn't need in the actual KiCad libs.
This adds a small KiCad logo in the top left of the Doxygen pages.
54px used as 55px is maximum recommended height for Doxygen logos.
For the main docs and the dev docs, this is easily done in the Doxyfile,
for the Python docs, as that is run from the binary dir, the source dir
is passed as an Environment variable.
Add missing build dependencies ngspice and oce.
Fix missing dependencies for MSYS2 builds on windows.
Remove enabling scripting now that is enabled by default.
- Also makes the project and file import functions filetype dependent.
- The change from IO_MGR::KICAD to IO_MGR::KICAD_SEXP removes a conflict from a compile definition for KICAD when compiling kicad/import_project.cpp
The base-devel package install was missing from the "MSYS2 The Easy Way"
section of the compiling developers document.
Fixes lp:1670067
https://bugs.launchpad.net/kicad/+bug/1670067
Update version 5 road map to reflect the actual tasks that will be
completed during the current development cycle.
Add version 6 road map and add tasks not completed from the version
5 road map and the general road map.
Define empty string variable KICAD_BRANCH_NAME that can be used as an
optional version string element. When git is used to build the version
string, this variable is set to the git branch name. It can also be
defined at configuration time as an optional string appended to the
$KICAD_VERSION variable.
Define empty string variable KICAD_VERSION_EXTRA that can be set by
the user at configuration.
The variables KICAD_BRANCH_NAME and KICAD_VERSION_EXTRA are only
appended to KICAD_VERSION if they are set. Otherwise, only KICAD_VERSION
is uses as the version string.
Update the developer building from source document to reflect the changes.
* Remove tasks that are not going to be completed by FOSDEM 2017 release
(hopefully) announcement.
* Update item task lists to reflects changes discussed at CERN meeting.
* Update item status to reflect the current state of the tasks.
* Add a few new changes that are slated for release.
* Revise the generic road map by deleting complete items and adding new items
discussed at CERN meeting.
* Remove unused definition from config.h.cmake.
Libraries have been 100% case-sensitive for a while now; there is no longer a
need to keep this option around. This will change nothing except for any
stragglers still manually specifying this old option.
* Convert user interface guidelines to markdown and add to the documentation
created by Doxygen.
* Remove HOW_TO_CONTRIBUTE.txt. This information is covered elsewhere.
* Remove wxWidgets_patch_notes.txt.
* Update the developer road map document.
* Update the compiling KiCad from source document to reflect recent build
changes.
* Change Cairo library version to 1.8.8 to fix build issues on CentOS 6.
* Remove push and shove router documentation which is maintained in the
user documentation.
* Remove coding_style_policy.pdf since it is know automatically generated
with the developers documentation and linked on the KiCad website.
* Merge the contents of rules_for_capitalization_in_Kicad_UI.txt into
UIPolicy.txt.
* Remove rules_for_capitalization_in_Kicad_UI.txt.
1. Fixed an assumption somebody originally made in the plugin that std::string had contiguous storage. This is not specced behavior pre C++11 so we gamble by calling .reserve() which should give a far better guarantee.
2. Added copy to clipboard information for curl
3. Removed some openssl references in compiling.md
4. Renamed struct vars to be uppercase to match "public var" code style policy
* Add note about 32-bit builds to MSYS2 the hard way section.
* Add known issues section for building on windows with MSYS2.
* Add 64-bit Boost 1.59 issue to MSYS2 issues section.
* Fix broken link to KiCad patches source path.