Relevant KLayout version: 0.27.10
Author: Kazzz-S
Last modified: 2022-07-28
# 1. Introduction This directory **`macbuild`** contains different files required for building KLayout (http://www.klayout.de/) version 0.27.10 or later for different 64-bit macOS, including: * Catalina (10.15.7) : the primary development environment * Big Sur (11.x) : experimental; Apple M1 chip is not tested since the author does not own an M1 Mac * Monterey (12.x) : -- ditto -- Building KLayout for the previous operating systems listed below should still be possible.
However, they are not actively supported, and DMG packages for them are not provided. * Mojave (10.14) * High Sierra (10.13) * Sierra (10.12) * El Capitan (10.11) Throughout this document, the primary target machine is **Intel x86_64** with **macOS Catalina**.
A **((Notes))** marker indicates special notes for specific operating systems. # 2. Qt5 Frameworks By default, the Qt framework is "Qt5" from MacPorts (https://www.macports.org/), which is usually located under: ``` /opt/local/libexec/qt5/ ``` Alternatively, you can use "Qt5" from Homebrew (https://brew.sh/), which is usually located under: ``` /usr/local/opt/qt@5/ ``` OR "Qt5" from Anaconda3 (https://www.anaconda.com/), which is usually located under: ``` $HOME/opt/anaconda3/pkgs/qt-{version} ``` If you have installed Anaconda3 under $HOME/opt/anaconda3/, make a symbolic link: ``` /Applications/anaconda3/ ---> $HOME/opt/anaconda3/ ``` **((Notes))** "Qt5" from Homebrew is chosen as the default for **Big Sur** and **Monterey**. # 3. Script language support: Ruby and Python Earlier, by default, supported script languages, i.e., Ruby and Python, were those standard ones bundled with the OS.
This configuration is possible only for macOS Catalina (10.15.7).
``` $ /usr/bin/ruby -v ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19] $ /usr/bin/python --version Python 2.7.16 ``` Big Sur (11.x) and Monterey (< 12.3) still provide the Python 2.7 binaries to run various legacy applications.
However, the latest Xcode 13.1 does not allow us to link the legacy Python 2.7 library with the newly compiled KLayout binaries.
Moreover, Monterey (12.3.1) finally eliminated the Python 2.7 binaries.
Therefore, Homebrew is adopted as the default environment for Big Sur and Monterey. The build script **`build4mac.py`** provides several possible combinations of Qt5, Ruy, and Python modules to accommodate such a slightly complex environment.
Some typical use cases are described in Section 6. # 4. Prerequisites You need to have: * the latest Xcode and command-line tool kit compliant with each OS * Qt5 package from MacPorts, Homebrew, or Anaconda3 * optionally Ruby and Python packages from MacPorts, Homebrew, or Anaconda3 #### For matching versions of Ruby and Python, please also refer to `build4mac_env.py`. # 5. Command-line options of **`build4mac.py`** are as shown below. **((Notes))** For **Catalina** ``` --------------------------------------------------------------------------------------------------------- << Usage of 'build4mac.py' >> for building KLayout 0.27.10 or later on different Apple macOS / Mac OSX platforms. $ [python] ./build4mac.py option & argument : descriptions (refer to 'macbuild/build4mac_env.py' for details)| default value --------------------------------------------------------------------------------------+--------------- [-q|--qt ] : case-insensitive type=['Qt5MacPorts', 'Qt5Brew', 'Qt5Ana3'] | qt5macports : Qt5MacPorts: use Qt5 from MacPorts | : Qt5Brew: use Qt5 from Homebrew | : Qt5Ana3: use Qt5 from Anaconda3 | [-r|--ruby ] : case-insensitive type=['nil', 'Sys', 'MP31', 'HB31', 'Ana3'] | sys : nil: don't bind Ruby | : Sys: use OS-bundled Ruby [2.0 - 2.6] depending on OS | : MP31: use Ruby 3.1 from MacPorts | : HB31: use Ruby 3.1 from Homebrew | : Ana3: use Ruby 3.1 from Anaconda3 | [-p|--python ] : case-insensitive type=['nil', 'Sys', 'MP38', 'HB38', 'Ana3', | sys : 'HBAuto'] | : nil: don't bind Python | : Sys: use OS-bundled Python 2.7 [ElCapitan -- Catalina] | : MP38: use Python 3.8 from MacPorts | : HB38: use Python 3.8 from Homebrew | : Ana3: use Python 3.8 from Anaconda3 | : HBAuto: use the latest Python 3.x auto-detected from Homebrew | [-P|--buildPymod] : build and deploy Pymod (*.whl and *.egg) for LW-*.dmg | disabled [-n|--noqtbinding] : don't create Qt bindings for ruby scripts | disabled [-u|--noqtuitools] : don't include uitools in Qt binding | disabled [-m|--make