Commit Graph

260 Commits

Author SHA1 Message Date
John Beard 272c045c37 Format: Default to switch cases on separate lines by default
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.
2019-05-07 09:49:05 +01:00
Ian McInerney f87754848e Remove ki_mutex.h and associated includes
REMOVED: ki_mutex.h since all mutexes now use std::mutex
2019-05-03 17:13:20 -07:00
John Beard 957f868e2f Docs: add a 'technical todo' list
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.
2019-04-20 15:32:12 +01:00
John Beard 3d7c070faf Dev doc: Fix and add link
Fix the libngspice link markdown.

Add a link to the testing page from the relevant section on QA test
options.
2019-04-18 17:16:35 +01:00
John Beard f4ba3cd910 QA: Add build-time option to enable XML output from tests
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.
2019-04-18 10:59:06 +01:00
John Beard 45aa514591 QA: Allow to build tests manually if disabled
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
2019-04-17 18:00:40 +01:00
jean-pierre charras ead5bfe64b Add option to build QA test suite (this option is on by default.
KICAD_BUILD_QA_TESTS=OFF skips the QA test suite build.
This is useful for daily work on Kicad. It spares compil and link time.
2019-04-16 18:40:56 +02:00
Seth Hillbrand 257d9b5fe9 Allow setting the kicad config dir
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
2019-04-08 12:33:49 -07:00
John Beard a7270f8c1c Formatting: prefer a Git config variable to env var
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.
2019-03-29 15:06:48 +00:00
John Beard a69cdf1793 Formatting: exclude generated files from git formatting hook
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
2019-03-29 15:06:48 +00:00
Wayne Stambaugh b889ecaab2 Fix broken Python plugin developer's document.
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.
2019-03-20 10:07:45 -04:00
Wayne Stambaugh 7e34a5a106 Fix broken table of contents link in coding policy. 2019-03-15 15:47:09 -04:00
Seth Hillbrand 2cbbcfd3e0 Doxyfiles: Remove local debug lines 2019-02-13 17:22:07 -08:00
Seth Hillbrand 5c855a097b Doxygen: Update doxyfiles
Adds/updates commentary and removes empty, obsolete DTD tags
2019-02-13 10:18:07 -08:00
John Beard bed0667712 Docs: Advanced config is explicity experimental
Any advanced config option is not to be considered production-ready,
so make this clear in the dev-docs.
2019-02-11 09:47:13 +00:00
Nick Østergaard 03e787ef2d Add anchor for advanced configuration
To make it appear in the TOC on the left and be able to link to it
directly on the www.
2019-02-10 21:31:05 +00:00
John Beard adddc41bc5 QA: Reinstate polygon_triangulation utility
This utility has been disabled since the eeschema GAL merge. It
can be reinstated as part of the qa_pcbnew_tools framework.
2019-01-29 08:15:51 -05:00
John Beard b94cf9d564 Docs: Describe QA util programs in the testing docs 2019-01-29 08:15:30 -05:00
John Beard 2f5dd6a43a Docs: Fix doxygen links
Doxygen is now at: http://www.doxygen.nl

Reported by: Brian Piccioni.
2019-01-02 09:53:29 -05:00
John Beard a33a8292a4 Run-time config for advanced options
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.
2018-12-28 11:36:08 -05:00
Seth Hillbrand 830dced83f Fix minor issue in docs
Source is distributed in xz format, so the older gzip instruction did
not work.
2018-12-10 12:04:41 -08:00
Maciej Suminski 6a233a1367 Updated a link to the stable source code tarball in the documentation 2018-12-04 15:32:03 +01:00
Nabeel Ahmad 7975e05446 Documentation: UI policy update about dialogs
Updated out-of-date information about the use of wxFormBuilder.
2018-12-03 12:22:14 -05:00
John Beard 4363cc0bec Docs: add docset generation target
This is a CMake (non-ALL) target that will build a Zeal-compatible
docset from a version of the doxygen HTML.

To do this, doxytag2zeal is used.
2018-12-03 10:14:15 -05:00
Adam Wolf 3392162d49 Fixup documentation for macOS Python script plugins. Fixes #1789960. 2018-11-28 09:40:22 -05:00
John Beard 369d172460 Document tracemask strings and add note in testing.md
Also make the examples in the testing.md docs self-consistent.
2018-11-27 08:33:10 -05:00
John Beard 5a0318968f Break zoom control into a self-contained controller
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.
2018-11-26 14:40:09 -05:00
Maciej Suminski 3fd2968318 Explained AF_ACTIVATE flag in the documentation 2018-11-13 09:36:26 +01:00
John Beard ee819216e2 QA: Make a separate unit test utils library, COLOR4D tests
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.
2018-11-08 14:40:42 -05:00
John Beard c6a971d971 Dev docs: Add TOC to testing markdown 2018-10-29 14:12:55 -04:00
John Beard e601b42207 Docs: printing and trace
Add a quick outline of some of the ways you can dump debug during
debugging. Also include a list of known trace mask strings.
2018-10-29 14:12:55 -04:00
John Beard 409e884ce6 Add git format commit hook
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.
2018-10-29 10:47:51 -04:00
Thomas Pointhuber 0e0b4d52a2 Add initial support for Phoenix (new wxPython binding)
Based on the work of @mmccoo:
https://kicad.mmccoo.com/2017/11/23/learnings-from-moving-kicad-to-wxpython-4-0/
and this additional patchset to remove wxpy_api.h dependency:
http://mmccoo.com/random/0001-Remove-dependence-on-pywx_api.h.patch

Please note CreatePythonShellWindow changed quite a lot. Throughful testing
should be made for the old as well as new wxPython version on all platforms
2018-10-26 13:21:11 +02:00
John Beard acd103631b QA: PCB file input parse test program (fuzzable)
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.
2018-10-22 12:32:24 -04:00
Thomas Pointhuber 7548a3b1bf Add KICAD_SCRIPTING_PYTHON3 flag to about dialog and doc 2018-10-19 09:59:05 +02:00
John Beard 86999a2a4d Update testing documentation 2018-10-06 08:46:36 -04:00
qu1ck d19b152655 Update pcbnew-plugins.md with info about icons 2018-08-27 11:08:39 -04:00
Nick Østergaard 6db71cd734 Add documentation for KICAD_USE_OCC 2018-08-20 13:26:40 -07:00
John Beard 6165a735ae Docs: update doxygen docs logo
The logo used was subtly different to the official KiCad
logo - different font weight and corner rounds.
2018-08-06 11:06:24 -04:00
Adam Wolf e3cf2705de Aim macOS users at kicad-mac-builder, and make building for macOS sound less scary. 2018-07-23 13:04:34 -04:00
John Beard 930f3dd74f Documentation: add logo to Doxygen pages
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.
2018-06-25 08:23:17 -04:00
Carsten Schoenert a11714b1a4 fix misspelled 'an other' -> 'another' 2018-04-08 13:24:37 -04:00
Wayne Stambaugh 747e14f9e1 Fix broken link in compiling.md. 2018-04-02 18:27:37 -04:00
Jon Evans 8cdb82df42 Update Windows MSYS2 build instructions; remove "easy way" for now 2018-03-21 14:33:44 -04:00
Jon Evans 8f0c798dc8 Update MSYS2 links 2018-03-07 21:06:30 -05:00
Jon Evans 38d211b5e1 Document workaround for Windows compilation issues with OCE 2018-03-07 21:03:04 -05:00
Wayne Stambaugh 944a0b195e Update KiCad compiling document.
Add missing build dependencies ngspice and oce.

Fix missing dependencies for MSYS2 builds on windows.

Remove enabling scripting now that is enabled by default.
2018-03-06 18:54:51 -05:00
Bernhard Stegmaier b300e8cce5 Update macOS compiling instructions to use KiCad wxWidgets fork. 2018-02-21 13:37:54 -05:00
Wayne Stambaugh 93683d0021 Enable all build configuration options ready for stable 5 release.
Enable Python scripting, OCE, and spice build configuration options.

Update compiling.md to reflect new option settings.
2017-12-29 17:38:42 -05:00
Nick Østergaard 4e8e6d4823 Add explaining notes on when to use changelog tags 2017-11-29 17:36:03 +01:00
Maciej Suminski c5254bfec2 Documentation: changed git alias sections name to match the contents 2017-11-29 17:36:03 +01:00
Maciej Suminski f3ea34e3c6 Documentation: described 'git changelog' alias
Added 'git changelog' alias description and moved both descriptions to a
single paragraph.
2017-11-29 11:33:07 +01:00
Maciej Suminski f9fd60350f Documentation: added a note about changelog tags 2017-11-29 10:44:47 +01:00
Russell Oliver 3b0855d204 Eagle Project Import: Code cleanup and documentation.
- 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
2017-10-20 08:58:40 +02:00
Wayne Stambaugh 81fcc852b1 Fix Pcbnew plugin developer's document table of contents. 2017-06-28 11:38:44 -04:00
Wayne Stambaugh 0f20dc747f Minor Pcbnew plugin developer's document fixes.
Reformat line width to prevent line wrapping.

Add table of contents and header links.
2017-06-28 11:08:23 -04:00
Simon Kueppers bbef4fee17 Added documentation about pcbnew plugin development 2017-06-28 10:48:41 -04:00
Wayne Stambaugh dab73e172b Doxygen warning fixes and coding policy comment changes. 2017-06-16 10:08:28 -04:00
Kristoffer Ödmark 19d5cc7548 Removed all exception specifiers since deprecated.
Exception specifiers are deprecated in cpp11, so went through them all
and removed them from the code.
2017-06-12 13:54:55 -04:00
Kristoffer Ödmark 8590a22995 Cpp11 compability steps.
-Changed coding style to not have exception specifications.
-Changed autogenerated Lexer code to not have exception specifications.
2017-06-12 11:47:20 -04:00
Adam Wolf 0a29ab9031 Update macOS portion of compiling.md.
In general, replace OSX with macOS.  Moved the minimum OS version from 10.7 to 10.9.  Moved the maximum version from 10.10 to the current 10.12.
2017-03-14 19:08:18 -04:00
Wayne Stambaugh 6f3ec438cb Add missing install package to the compiling document.
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
2017-03-05 14:08:12 -05:00
John Beard 9dff85f0dc Add developer docs about testing 2017-03-01 14:05:51 +01:00
Maciej Suminski 1077b679c5 Minor updates to the Tool Framework documentation 2017-02-23 09:45:43 +01:00
John Beard 6b39e9ea81 Update GAL tool documentation
Update to reference new PCB_ACTIONs (used to be COMMON_ACTION)

Also expand on use of BOARD_COMMIT.

Add doxygen TOC markup
2017-02-23 09:00:55 +01:00
Wayne Stambaugh 899fe08f20 Remove KICAD_USE_SCH_IO_MANAGER build option from docs and build info. 2017-02-10 11:58:15 -05:00
Wayne Stambaugh 0f7785760f Add missing MSYS2 package on windows to developer's compiling document. 2017-01-31 15:25:30 -05:00
Maciej Suminski 4b9243e0bf Allow registering TOOLs in any order. 2017-01-30 13:21:43 +01:00
Chris Pavlina 0881bf77bd Add commit message format doc with Fixes: links 2017-01-26 16:03:54 -05:00
Wayne Stambaugh 0b6147ed05 Minor developer's documentation fixes.
Fix duplicate table of content links.

Fix heading level issues in version 6 road map.

Add new Python action menu options to compiling document.
2017-01-24 10:14:27 -05:00
John Beard 5a2be26934 Tool Framework documentation 2017-01-18 16:30:33 +01:00
Nick Østergaard c676553f19 Fix OCE link in dev-docs
* Remove duplicate ngspice link
* Add OCE link
2017-01-14 12:24:40 -05:00
Wayne Stambaugh 9c758c4010 Road map updates.
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.
2016-12-10 13:20:24 -05:00
Wayne Stambaugh fd54d394bd Version string improvements.
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.
2016-11-25 09:09:10 -05:00
Wayne Stambaugh c483574658 Add stitching via support to the version 5 road map. 2016-10-17 11:11:35 -04:00
Wayne Stambaugh 225f0d8917 Update build KiCad from source documentation.
Add note about KICAD_BUILD_VERSION and KICAD_REPO_NAME CMake configuration
variables.

Fix incorrect path for OSX patch command.

Add new OSX patches to OSX build instructions.

Fix missing ngspice url.
2016-09-17 15:49:20 -04:00
Nick Østergaard 6767ea7bbf Update the REAMDE.txt to reflect the current structure
The old changelog was archived together with the others in
Documentation/changelogs.
2016-09-16 16:43:19 -04:00
José Ignacio Romero 83ed3c933e Add KICAD_INSTALL_DEMOS CMake option
It is ON by default, determines wether to install the bundled demos
and examples.
2016-09-14 19:57:35 -04:00
Maciej Suminski e25630b7ac UI policy update
Added a note about Mark's wxFormBuilder repository and
'internationalize' checkbox in wxFB.
2016-09-09 09:38:56 -04:00
Nick Østergaard caafcde585 Add KICAD_ prefix to build switches
KICAD_ prefix was added to the USE_OCE and USE_SCH_IO_MANAGER build
switches together with a small description to the devdocs from
compiling.md.
2016-09-05 08:46:01 -04:00
Jon Neal 049e9909ac Updated the compiling instructions to remove bzr and talk about the OCE flag. 2016-09-04 18:42:11 -04:00
Maciej Suminski 3204b14254 Updated the r5 road map (integrated simulator) 2016-08-12 16:58:39 +02:00
Maciej Suminski a6cdf536b9 Added KICAD_SPICE option description in compiling.md 2016-08-12 16:00:35 +02:00
Wayne Stambaugh df99b4068d Update stable release 5 road map.
* 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.
2016-07-05 10:06:23 -04:00
Chris Pavlina c13f80bb49 Remove unneeded compile option KICAD_KEEPCASE
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.
2016-06-10 23:15:02 -04:00
Wayne Stambaugh 00b8624713 Fix missing links in ui-policy.md. 2016-05-13 13:09:28 -04:00
Chris Pavlina 84d3fbfd68 Remove MaxUndoItems, make devel option DevelMaxUndoItems
Begin documenting configuration keys in Doxygen
2016-05-12 12:51:32 -04:00
Maciej Suminski 7b669c1b03 Removed remaining traces of KICAD_SKIP_BOOST parameter. 2016-05-10 11:39:13 +02:00
Wayne Stambaugh 740f8f55d8 Developer documentation improvements.
* 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.
2016-04-19 10:30:32 -04:00
Nick Østergaard 61eb65f0e9 Documentation: add missing dependency to compiling with msys2. 2016-03-11 08:20:31 -05:00
Wayne Stambaugh a319c34188 Road map: add ERC improvements and revise object introspection. 2016-02-09 16:19:26 -05:00
Wayne Stambaugh a9bf46a5de Documentation: add version 5 road map to developer documentation. 2016-02-03 19:12:24 -05:00
Wayne Stambaugh a23e7129d4 Remove GUI translation how to as it is now maintained in the KiCad I18N project on GitHub. 2016-01-25 16:57:52 -05:00
Wayne Stambaugh 73d6fa3368 Compiling KiCad from source developer documentation fixes.
* Remove KICAD_SKIP_BOOST build configuration option.
* Remove USE_OSX_DEPS_BUILDER build configuration option.
* Add missing web link for OpenGL Mathematics library (GLM).
2016-01-04 17:00:42 -05:00
Wayne Stambaugh c68790751a Developer documentation and other minor fixes.
* 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.
2016-01-04 10:23:28 -05:00
Wayne Stambaugh bd436aa6a7 Developer documentation clean up.
* 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.
2016-01-03 16:53:20 -05:00
jean-pierre charras ab585f46ce Update doc. 2015-12-29 13:14:35 +01:00
unknown e506a4354b Replace avhttp with libcurl: Some fixes:
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
2015-12-22 15:19:00 +01:00
Maciej Suminski 231eaecf34 Removed the included GLM library, switched to the system one. 2015-12-08 10:56:53 +01:00
Wayne Stambaugh dd06abf002 Documentation: improvement to build from source on windows docs.
* 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.
2015-12-02 13:57:54 -05:00