KLayout Main Sources
Go to file
Matthias Koefferlein 877646d959 Debugging sized operator for generic DRC, new tests 2023-11-18 13:40:50 +01:00
.github Merge pull request #1520 from KLayout/dependabot/github_actions/pypa/cibuildwheel-2.16.2 2023-11-02 20:25:37 +01:00
ci-scripts building arm64 wheels with cibuildwheel (uses intel runner) 2023-05-22 21:22:29 -04:00
etc Update klayout.desktop for gnome GNOME DE 2020-12-05 15:11:59 +00:00
macbuild Added Change_Python_LibPath_RelativeToAbsolute() function to force relative paths of libraries that Python depends on to absolute paths. Also added some code for debugging. 2023-10-04 22:14:27 +09:00
samples/lvs Some refactoring, better templates 2019-07-13 18:40:00 +02:00
scripts Dependencies for OpenSUSE 15 packages 2023-11-15 23:13:30 +01:00
src Debugging sized operator for generic DRC, new tests 2023-11-18 13:40:50 +01:00
testdata Debugging sized operator for generic DRC, new tests 2023-11-18 13:40:50 +01:00
.gitignore .gitignore 2023-01-22 15:30:52 +01:00
.travis.yml Cleanup of Travis build matrix (32bit not working because ccache is not available in manylinux2014, python 2.7mu not available in manylinux2014) 2021-05-01 23:29:56 +02:00
CONTRIB Updated CONTRIB file, preparations for RPM building. 2017-09-10 17:42:38 +00:00
COPYRIGHT Updated copyright to 2022, preparations for 0.27.6 (was delayed due to code signing certificate issues) 2022-01-04 21:20:04 +01:00
Changelog Fixed some case things and typos in Release notes 2023-09-13 23:53:54 +02:00
Changelog.Debian Preparations for 0.28.12 2023-09-12 07:24:03 +02:00
Changelog.Debian.templ Generalized deb package generation for easier maintenance 2021-07-31 10:16:53 +02:00
Jenkinsfile Turning off Python module test 2022-12-18 01:16:46 +01:00
Jenkinsfile-linux Added docker_args config to multipipeline Jenkins file for Linux cluster 2023-02-24 00:00:40 +01:00
Jenkinsfile-msvc2017 Turning off Python module test 2022-12-18 01:13:08 +01:00
Jenkinsfile-publish-doc Fixed doc publishing Jenkinsfile 2023-02-24 18:33:24 +01:00
Jenkinsfile-publish-sources Adjusting Jenkinsfiles to Linux cluster 2023-02-24 14:47:23 +01:00
Jenkinsfile-pypi Adjusting Jenkinsfiles to Linux cluster 2023-02-24 14:47:23 +01:00
LICENSE Initial commit 2017-02-12 12:54:21 +01:00
MANIFEST.in Bumped PyPI version again for correct sdist 2023-06-11 18:51:00 +02:00
Makefile WIP: Parametrizing macbuild to make custom installations easier (#680) 2020-11-21 22:09:03 +01:00
README.md WIP: README updated 2022-08-08 21:41:23 +02:00
azure-pipelines.yml Fixed indentation in azure-pipelines.yml 2023-03-01 22:45:58 +01:00
build.bat Ensure that version changes trigger builds (build.bat) 2022-12-21 23:23:13 +01:00
build.sh Compatibility with old libgit2 2023-10-25 23:03:18 +02:00
build4mac.py adding symlinks to build4mac scripts 2018-03-16 17:01:56 -04:00
dropbox-deployment.yml pushing wheel to dropbox 2018-07-16 22:26:17 -04:00
makeDMG4mac.py adding symlinks to build4mac scripts 2018-03-16 17:01:56 -04:00
pyproject.toml building arm64 wheels with cibuildwheel (uses intel runner) 2023-05-22 21:22:29 -04:00
setup.py Different approach to exclude libgit2 for pymod 2023-11-01 23:41:28 +01:00
travis-build.sh minor edit in logging 2019-04-05 12:47:06 -04:00
version.sh Preparations for 0.28.12 2023-09-12 07:24:03 +02:00

README.md

klayout

This repository will hold the main sources for the KLayout project.

Plugins can be included into the "plugins" directory from external sources.

For more details see http://www.klayout.org.

Building requirements

Building on Linux:

  • Qt 4.7 or later (4.6 with some restrictions), Qt 5 or Qt 6
  • gcc 4.6 or later or clang 3.8 or later

Building on Windows with MSYS2:

  • MSYS2 with gcc, Qt4, 5 or 6, zlib, ruby and python packages installed

Building on Windows with MSVC 2017:

  • MSVC 2017
  • Build requisites from klayout-kit

For more build instructions see http://www.klayout.de/build.html.

Build options

  • Ruby: with this option, Ruby scripts can be executed and developped within KLayout. Ruby support is detected automatically by the build script.
  • Python: with this option, Python scripts can be executed and developped within KLayout. Python support is detected automatically by the build script.
  • Qt binding: with this option, Qt objects are made available to Ruby and Python scripts. Qt bindings are enabled by default. Qt binding offers an option to create custom user interfaces from scripts and to interact with KLayout's main GUI. On the other hand, they provide a considerable overhead when building and running the application.
  • 64 bit coordinate support: with this option, the coordinate type used internally is extended to 64bit as compared to 32bit in the standard version. This will duplicate memory requirements for coordinate lists, but allow a larger design space. 64bit coordinate support is experimental and disabled by default.

Building instructions (Linux)

Plain building for Qt4, Qt5 and Qt6 (one Qt version installed)

./build.sh

Building without Qt binding

./build.sh -without-qtbinding

Debug build

./build.sh -debug

Building with a particular Ruby version

./build.sh -ruby <path-to-ruby>

(path-to-ruby is the full path of the particular ruby interpreter)

Building with a particular Python version

./build.sh -python <path-to-python>

(path-to-python is the full path of the particular python interpreter)

Building with a particular Qt version

./build.sh -qmake <path-to-qmake>

(path-to-qmake is the full path of the particular qmake installation)

Building with 64bit coordinate support (experimental)

./build.sh -with-64bit-coord

Pass make options

./build.sh -j4

(for running 4 jobs in parallel)

More options

For more options use

./build.sh -h

Running the Test Suite (Linux)

Go to the build directory (i.e. "bin-release") and enter

export TESTTMP=testtmp    # path to a directory that will hold temporary data (will be created)
export TESTSRC=..         # path to the source directory
./ut_runner

For more options use

./ut_runner -h

Build instructions (Windows, MSYS2)

From the MSYS2 MinGW bash (32 bit or 64 bit) use the same commands as for Linux to build the binaries.

Build instructions (Windows, MSVC 2017)

The combination supported and tested was Qt 5.11/MSVC 2017 64bit. It's sufficient to install the build tools from MSVC's community edition.

A build script similar to build.sh is provided for Windows (build.bat).

For details about this build script use

build.bat -h

For MSVC builds a number of third party libraries are required:

  • Ruby
  • Python
  • zlib
  • expat
  • curl
  • pthread-win

The "klayout-bits4msvc2017" project (https://github.com/klayoutmatthias/klayout_bits4msvc2017) targets towards providing a binary distribution for this purpose. See the release notes there for download links. Download the .zip archive from there and unpack it to some folder, e.g. "c:\klayout-bits".

The build script needs the path to this package. "qmake" and (for obtaining the build version) "git" should be in the path. If qmake is not in the path, you can use "build.bat -qmake ..." to specify qmake's path.

Here is an example for the build.bat call:

build.bat -bits c:\klayout-bits

The 3rd party bits kit can also be used to build the Python standalone package on setuptools. Specify the full path to the 3rd party package up to the compiler and architecture. On 64bit with the bits package installed in "c:\klayout-bits" the build call is this:

set KLAYOUT_BITS=c:\klayout-bits\msvc2017\x64
python setup.py build