Cairo supports antialiasing when rendering but can be slow when set to
sub-pixel mode. This bumps the minimum version of Cairo to 1.12
(available in 14.04 LTS as well as mingw) to support three antialias
settings (fast, good, best) that offer speed/appearance tradeoffs.
This can provide a higher-quality eeschema render as it works on a
per-element basis as opposed to the OpenGL per-screen antialias.
GLM version 0.9.9.3 has a C++11 error that causes issues for KiCad.
Earlier version function as expected. Since GLM is header-only, forcing
the version during compilation is sufficient to ensure that the
executable functions correctly.
Fixes: lp:1804030
* https://bugs.launchpad.net/kicad/+bug/1804030
Phoenix reports version 4.x but wxWidgets do not follow this version.
Phoenix also does not have or require the wxPython.h file.
Fixes: lp:1801109
* https://bugs.launchpad.net/kicad/+bug/1801109
The compile flag -ffloat-store requires floating point values to be
stored in memory rather than in registers to prevent errors when two
numbers are compared that were stored in different locations.
This commit finishes the removal of OpenMP from the KiCad codebase.
Removed in this commit are the OpenMP calls in 3d-viewer and
qa/polygon_triangulation as well as all references in CMakeLists.txt
std::thread is used instead for multithreaded computation
Certain distribution does not handle GLVND well, as the result the
accelerated canvas is not enabled. For the time being it is better to
keep using the legacy preference.
Thanks to Aurelio Lucchesi for investigating the cause.
Fixes: lp:1781581
* https://bugs.launchpad.net/kicad/+bug/1781581
It forces link option -g1 instead og -g3 which allows basic debug.
This is especially useful on Mingw because binaries in debug build are very large:
_pcbnew.kiface: 1.25 Gb, small file option: 65Mb
wxWidgets_CONFIG_OPTIONS can be utilised to explicitly select GTK2 or GTK3. It
must be evaluated when querying the toolkit to avoid a mismatch between the
version actually used and the version KiCad assumes to be used.
Reapplied the original version. The previous patch has been modified
under an invalid assumption of being incompatible with msys2.
wxWidgets_CONFIG_OPTIONS can be utilised to explicitly select GTK2 or GTK3. It
must be evaluated when querying the toolkit to avoid a mismatch between the
version actually used and the version KiCad assumes to be used.
The opencascade patch intrusively checked against libraries but broke
some build scripts. This restores the default cmake OCE behavior that was
changed by 2bab30d9a and makes the OpenCascade search truly secondary.
This is substituted at configuration time, creating an absolute path, which
breaks overriding CMAKE_INSTALL_PREFIX at installation time, breaking the
workflow for installation using GNU stow.
This ensures that GLM objects are still initialized correctly when new
version of this library are used (after 0.9.9-a2).
This also fixes display corruption in 3D-viewer with Raytracer.
Fixes: lp:1762379
* https://bugs.launchpad.net/kicad/+bug/1762379
Having wxWidgets and wxPython build using different toolkits leads
to an unusable build. KiCad executables are linked against wxWidgets
shared libraries, which will be in conflict with wxPython ones that
are loaded at runtime. We cannot easily solve it, so at least warn
the users about expected problems.
More information:
https://forum.kicad.info/t/9493https://bugs.launchpad.net/kicad/+bug/1746753
This target seems to only create empty makefiles, tested on linux. And I
can not find any references to it in any of the current CMakeLists. Lets
remove it.
This will ensure KiCad will be easily installable from the app stores such
as GNOME Software.
The screenshots probably need a better home. Not that it would matter
too much -- the Linux distributions do cache them with their feeds, so
the app store applications don't access them from this source directly.
Screenshots from the web [1] can't be used since they are too large for
use in the app store application. :(
[1] http://kicad-pcb.org/discover/screenshots/
Fixes lp:1323789
https://bugs.launchpad.net/kicad/+bug/1323789
Add loading symbol library table code to schematic PROJECT object.
Fix minor issues with loading global symbol library table.
Add default symbol library path environment variable to the environment
variable list and change the variable name to KICAD_SYMBOL_DIR.
Add code to SCH_SCREENS to test if all library nicknames of the symbol
library IDs are empty.
Remove unnecessary KICAD_USE_SCH_IO_MANAGER build option.
- DIALOG_CHOOSE_COMPONENT has footprint select widget
- FOOTPRINT_SELECT_WIDGET
- FOOTPRINT_CHOICE widget (customized wxComboCtrl)
- FOOTPRINT_FILTER class
- FOOTPRINT_INFO rework:
- FOOTPRINT_ASYNC_LOADER to load without freezing UI
- Rewrite loader threads as queue-driven thread pool
- Make FOOTPRINT_INFO available via kiway
- FP_LIB_TABLE::PrefetchLib
- Access to global fp-lib-table via kiway
- SYNC_QUEUE threadsafe queue template
- Remove KICAD_FOOTPRINT_SELECTOR build option
This commit brings several changes:
- Add a footprint preview pane to the eeschema component selector
- Upgrade component list to wxTreeListCtrl
- Factor out wxTreeListCtrl subclass TWO_COLUMN_TREE_LIST which
patches a column size bug
- Linkify datasheet URL in info pane
This plugin mechanism is enabled only if option -DKICAD_SCRIPTING_ACTION_MENU=ON (it is off by default)
It imply -DKICAD_SCRIPTING=0N
This is currently for testing purposes only for developers, not yet for users.
Remove the KICAD_REPO_NAME option from the main cmake file and the
generated config.h file since it is no longer used.
Set the default branch name to "undefined" in CreateGitVersionHeader.cmake
instead of the KICAD_REPO_NAME option.
Remove generating KICAD_FULL_VERSION from CreateGitVersionHeader.cmake
and add it to WriteVersionHeader.cmake so that the default settings and
the new KiCadVersion.cmake definitions can be used to generate the full
version string as well.
Check to see if the branch name is set and only use the version to
generate the full version string. This allows the use of the KiCad
version cmake file to create a version only string like "4.0.4" with
no trailing branch name.
Change build_version.cpp to use the full version string rather than
concatenating the version and branch strings.
This allows the warning to be active for code which would benefit from
it, but not spew hundreds of warnings for code over which KiCad does not
have control of the override specifiers.
*) Extend SWIG support deeper into the BOARD class.
*) Move swig *.i files into a directory identified for SWIG, in preparation
for a parallel universe involving Phoenix's SIP.
*) Move swig files which will be common to both eeschema and pcbnew into
common/swig.
*) Sketch out a "common" python module, and plan on dovetailing that into a
libkicad_shared.{dll,so}
*) Add common/swig/ki_exceptions.i and define a macro HANDLE_EXCEPTIONS()
which is to be applied to any function which needs C++ to python
exception translation.
*) Move the test for SWIG tool into top level CMakeLists.txt file for use
in all python modules beyond pcbnew, i.e. eeschema and common.
*) Add SWIG_MODULE_pcbnew_EXTRA_DEPS which generates a better Makefile, one
which rebuilds the swig generated *.cxx file when one of its dependencies
change.
*) Re-architect the board.i file so that it can be split into multiple *.i
files easily.
*) Make some KIWAY from python progress, in preparation for Modular KiCad
phase III.
* Using CMAKE_INSTALL_PREFIX in KICAD_* install paths is redundant,
because they are allready relative to CMAKE_INSTALL_PREFIX when no
absolute path is given.
Using an absolute path makes it harder to change the install
path on the fly, without either rebuilding, or manually editing
CMakeCache.txt
Signed-off-by: Niki Guldbrand <niki.guldbrand@gmail.com>
It is no longer necessary (or sensible) to include a simulated bzr
revision number, and we can reliably get a branch name now. Therefore,
the new version strings look like:
(2016-08-26 revision 67230ac)-master
| | |
| | branch name, "HEAD" if not on a branch,
| | or "unknown" if no .git present
| |
| abbreviated commit hash, or no-git if no .git
| present
|
date of commit, or date of build if no .git present
Signed-off-by: Chris Pavlina <pavlina.chris@gmail.com>
* Factor out PROPERTIES object from the PCB plugin code and move it into
common so it can be used by both the Pcbnew and Eeschema plugins.
* Add schematic I/O plugin manager for loading and saving schematic and
component library files.
* Add initial attempt at a parser for current schematic file format. This
parser will be infinitely more strict than the current parser which is very
forgiving in what it parses.
* Make minor changes to the base bitmap class to support the new parser.
* Add find root sheet support to sheet object to allow fetching the root
sheet from any sheet in the stack.
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.
* Move add_directory()s in main CMakeList.txt after all find_package()
macros are run so all flags in the main CMakeList.txt are propagated
to the sub-folder CMakeList.txt files.
* Remove commented out include of config.h
* Make the link maps only build on linux as -${TO_LINKER},-cref
-${TO_LINKER},-Map=blah just gives warnings on osx w/ clang
* Make the link maps only build with flag -DKICAD_MAKE_LINK_MAPS is
defined during CMake configuration as they are highly specific.
* Moved the code for setting link maps into the main CMakeList.txt
file to avoid duplication.
* Removed -D__ASSERTMACRO__ from osx as its no longer needed
* Removed a couple of other OSX only things that wouldn't work anyway
* Moved set (BU_CHMOD_BUNDLE_ITEMS) to the main CMakeList.txt as
otherwise it would only work for the KiCad build not the other
applications
* Made KICAD_SCRIPTING_MODULES enable KICAD_SCRIPTING as currently if
you have modules enabled without the scripting base it will on build.
This could be changed to a fatal error saying you need to also enable
scripting but it seems unnecessary.
* Removed duplication of pcbnew.py install code under modules and
scripting since you can't have modules without scripting now
* Enables USE_WX_GRAPHICS_CONTEXT for OSX by default. This shouldn¡¯t be a
major change because it seems to get used on OSX behind the scenes anyway.
As a side effect, this might improve behavior with anti-aliasing because
KiCad shifts drawing by (0.5, 0.5) into the middle of the virtual pixels so
things may be less blurry. It will still build without enabling
USE_WX_GRAPHICS_CONTEXT, but the optimizations obviously won¡¯t be used.
* The optimizations currently only are effective when USE_WX_GRAPHICS_CONTEXT
is enabled and OSX. They might be also good for other platforms using
USE_WX_GRAPHICS_CONTEXT because it aggregates some drawing primitives using
paths wxGraphicsContext provides.
* It adds some #ifdefs for disabling the wxGraphicsContext stuff when
USE_WX_GRAPHICS_CONTEXT isn¡¯t enabled. If you hate #ifdefs, this also
could be dropped but then it will always check if wxGraphicsContext can be
applied.
* 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 download and build Boost from source and all CMake boost source build
dependencies.
* Make FindCairo.cmake use pkg-config when it's available not just all
platforms except windows.
* Add version checking to FindCairo.cmake.
* Change find GML version to 0.9.5.1 which is the current version in Ubuntu
14.04 LTS.
* Update required Cairo version to 1.12.1.
* Fix broken include path in FindGLM.cmake ( credit Cirilo Bernardo ).
* Fix if()/endif() warning in FindGLM.cmake.
* Remove trailing white space in FindGLM.cmake.
* Fix bug introduced in r6363 that inadvertently made OpenMP a required
dependency instead of an optional dependency.
* Remove quiet flag for FindOpenMP to report findings.
* Bump minimum CMake revision to 2.8.12. The CMake position independent code
handling was introduced in CMake 2.8.9 but 2.8.12 is current version in
Ubuntu 14.04 LTS which is a very popular distro.
* CMake provides a simple declarative statement to enable PIC, so no compiler
dependent handling is required.
* There is also no need to tell Boost to build with -fPIC, their build system
is smart enough.
CMake 3.0 defines two new variables:
* CMAKE_CXX_VISIBILITY_PRESET and
* CMAKE_VISIBILITY_INLINES_HIDDEN
to control whether symbols not explicitly tagged for export are implicitly
exported. Because only version 3.3 and later also applies that to static
libraries when in 3.3 mode, compatibility code is added as well.
When the minimum required version is bumped to 3.3, this code becomes
obsolete and a warning is displayed that the compatibility code should be
removed as well.
footprint wizard frame: now shows messages from footprints python scripts. Especially usefull when a parameter is incorrect. Fix also an other issue (IO exception error) with some python scripts when they are usin a print command to output messages (now they use the new message window.
* Use CMake add_custom_target() to run WriteVersionHeader.cmake as a command.
* Modify WriteVersionHeader.cmake to be run as a command instead of a macro.
* Add version header creation as a CMake common library build dependency.
* Add cached CMake variable KICAD_BUILD_VERSION when build version is defined during
configuration.
* Fix CMake macro create_bzr_version_header to always update version.h file whenever a repo change
is found. Running `make rebuild_cache is no longer required.
* Add new CMake function for writing version.h file.
* Always use version.h file for build version string instead of meaningless hard coded date.
* Only use bzr version string when build version is not defined at configuration time for stable release
version strings.
* Minor cleanup of FindBazaar.cmake.
* Remove unnecessary version.h.cmake file.
* Remove global s_NetObjectslist.
* Separate out non-owning version of NETLIST_OBJECTS_LIST into NETLIST_OBJECTS.
* Fix double free pertaining to ~NETLIST_READER().
* Remove all file-io from CvPCB.
* Remove exe launcher cvpcb, retain only cvpcb.kiface, since cvpcb.kiface has no file i/o.
* Add void CVPCB_MAINFRAME::KiwayMailIn( KIWAY_EXPRESS& mail ) and teach it to use old
netlist loading code with a STRING_LINE_READER LINE_READER.
* Fix BEGIN_EVENT_TABLE( CVPCB_MAINFRAME, KIWAY_PLAYER )
The GCC/LLVM specific handling for adding -fvisibility options is later in
this file, so these options would only be added on the second invocation
without clearing the cache.
* Remove redundant definition of KICAD_DATA_PATH since DEFAULT_INSTALL_PATH
was already defined.
* Use DEFAULT_INSTALL_PATH as the substitution for the default environment
variable paths.
* Add option to define DEFAULT_INSTALL_PATH during CMake configuration with
fall back to CMAKE_INSTALL_PREFIX if not not defined.
* Developer note: this change is primarily for package builders where
CMAKE_INSTALL_PATH is the path where the package builder temporarily
installs the build output before creating the package. When building
packages, DEFAULT_INSTALL_PATH should be set to the path where the
package will be installed by default.
* Add support for setting python site package path to PYTHON_SITE_PACKAGE_PATH.
* Move configure_file() so WXPYTHON_VERSION is already initialized before creating
config.h (Duh!).
* Add status message to indicate the version of wxPython found.
* Add test to CMakeLists.txt to verify wxPython is installed when
KICAD_SCRIPTING_WXPYTHON=ON.
* Add test to make sure wxPython version major and minor numbers match
the version of wxWidgets found.
* Add code to set the correct version of wxPython to the python scripting
initialization code.
* Minor code simplification in Pcbnew KIFACE main window creation.
* Using a Web navigator embedded in Kicad can create security issues in Kicad.
* The web kit is not always easily available on Linux.
* There is now a tool in kicad fp lib wizard to list and select the .pretty libs available on Github Kicad repo (When the kicad plugin is selected, this tool can download and make a local copy of these libs)
However, using -D KICAD_USE_WEBKIT=ON when invoking cmake still build the embedded web viewer.
Fix issue when using a page layout file in project folder: eeschema and Pcbnew did not use it, unless using an absolute path.
Now, if the file path is nor absolute, it is seen as relative to the project (which is the expected behavior)
fp lib wizard: when pcbnew id compiled with USE_GITHUB_PLUGIN=OFF, the github plugin option is no more accessible (and the web viewer no more used).
* Move all Windows install subfolders from ${CMAKE_INSTALL_PREFIX}/share/ to
${CMAKE_INSTALL_PREFIX}/share/kicad/.
* Remove unused define DEFAULT_FP_LIB_PATH from build configuration.
* Remove Boost target when skipping internal Boost build.
* Update INSTALL.txt to reflect install tree changes.
* Make all files generated by make_lexer() dependencies of thier respective build targets.
* Make building Boost a dependency for all libraries.
* Remove duplicate make_lexer() call for Specctra lexer files.
* Fix creation of single app bundle with respect to scripting support.
* Cleanup scripting search paths for OSX.
* Fix some small CMake bugs from previous OSX build change.
* Optimize bundle file structure to be consistent with Apple specs.
* Add helper script for compiling wxWidgets and wxPython
* Update OSX build instructions.
* Compile all binaries into a single application bundle.
* Use CMake BundleUtilities to make application bundle relocatable.
* Restructure build output to directly create an image file.
* Fix default search paths.
* Set KIGITHUB environment variable.
* Added patch to fix wxWidgets so names for OSX.
* Add version detection to FindwxWidgets.cmake
* Convert commands and macro names to lower case in FindwxWidgets.cmake.
* Use find_package_handle_standard_args() to handle version comparison.
* Update FindPackageHandleStandardArgs.cmake from CMake 3.0.2 to get the
latest bug fixes.
* Add an option to ignore building every OSX dependency from source and
use find_package() the way it is supposed to work unless the developer
specifically requests building everything from source.
Schematic component properties dialog: add 2 helper buttons to manage the chip name (name of the corresponding part in lib)
- a browse button to chose an other chip name
- a test button, to know if the part exists. If not existing, list the parts found when searching using a case insensitive comparison.
However to be compatible with old versions of Eeschema, when a search in library fails, a case insensitive search is made.
Therefore, this version should be compatible with sch files created by previous Eeschema versions compiled with KICAD_KEEPCASE = OFF
- Create KiCad road map document.
- Add road map to developer's documentation.
- A separate road map build command to CMake so the road map can be built
separately for use in websites.
- Update .bzrignore to ignore road map files generated by Doxygen.
! The initial testing of this commit should be done using a Debug build so that
all the wxASSERT()s are enabled. Also, be sure and keep enabled the
USE_KIWAY_DLLs option. The tree won't likely build without it. Turning it
off is senseless anyways. If you want stable code, go back to a prior version,
the one tagged with "stable".
* Relocate all functionality out of the wxApp derivative into more finely
targeted purposes:
a) DLL/DSO specific
b) PROJECT specific
c) EXE or process specific
d) configuration file specific data
e) configuration file manipulations functions.
All of this functionality was blended into an extremely large wxApp derivative
and that was incompatible with the desire to support multiple concurrently
loaded DLL/DSO's ("KIFACE")s and multiple concurrently open projects.
An amazing amount of organization come from simply sorting each bit of
functionality into the proper box.
* Switch to wxConfigBase from wxConfig everywhere except instantiation.
* Add classes KIWAY, KIFACE, KIFACE_I, SEARCH_STACK, PGM_BASE, PGM_KICAD,
PGM_SINGLE_TOP,
* Remove "Return" prefix on many function names.
* Remove obvious comments from CMakeLists.txt files, and from else() and endif()s.
* Fix building boost for use in a DSO on linux.
* Remove some of the assumptions in the CMakeLists.txt files that windows had
to be the host platform when building windows binaries.
* Reduce the number of wxStrings being constructed at program load time via
static construction.
* Pass wxConfigBase* to all SaveSettings() and LoadSettings() functions so that
these functions are useful even when the wxConfigBase comes from another
source, as is the case in the KICAD_MANAGER_FRAME.
* Move the setting of the KIPRJMOD environment variable into class PROJECT,
so that it can be moved into a project variable soon, and out of FP_LIB_TABLE.
* Add the KIWAY_PLAYER which is associated with a particular PROJECT, and all
its child wxFrames and wxDialogs now have a Kiway() member function which
returns a KIWAY& that that window tree branch is in support of. This is like
wxWindows DNA in that child windows get this member with proper value at time
of construction.
* Anticipate some of the needs for milestones B) and C) and make code
adjustments now in an effort to reduce work in those milestones.
* No testing has been done for python scripting, since milestone C) has that
being largely reworked and re-thought-out.
The desire is to migrate designs *away from* case independence, and to create
designs which use literally (case specific) interpreted component names. But for
backwards compatibility, you may turn OFF this option if you really must.
(Remember that with KiCad using text data files, typically you would be better
off simply doctoring those files into a case literal state with a text editor
and move forward into the brave new world of case specificity. Also, BOM
generators may not work properly when you have this option turned OFF, the xml
export's referential integrity is broken on library part name. Hence the default
is ON now, as of 29-Jan-2014.