Build on MacOS 10.9

edited December 2013 in General

A note for users trying to build KLayout on MacOS 10.9: this system uses the clang compiler which has some trouble building the current source code (0.23.1).

Apparently there is a patch which fixes build issues on MacOS 10.9:

In gsiExpression.cc, replace all occurrences of

    out.back () = *i;

with

    out.back () = (const R &) *i;

There are four places where this patch must be applied.

That patch will be included in the next version's source code.

Matthias

Comments

  • edited 7:48AM
    Hi Matthias,
    I have a MacOS 10.9 system, and I have both XCode and Qt 5.2.0 (Clang 4.2 (Apple), 64 bit) installed.
    Would you please help me to build KLayout on my system?
    Thanks,
    Geev
  • edited 7:48AM
    An Update:
    Hi Matthias,
    I tried to build KLayout in MacOS 10.9.
    First I modified gsiExpression.cc as you suggested.
    Then I modified the build script as:
    ./build.sh -platform mac-leopard-gcc-release \
    -qtbin /Users/geevy/Qt5.2.0/5.2.0/clang_64/bin \
    -qtlib /Users/geevy/Qt5.2.0/5.2.0/clang_64/lib \
    -rblib /usr/lib/libruby.2.0.0.dylib \
    -rbinc /usr/lib/ruby/2.0.0/universal-darwin13
    I got this result:
    Error: -rbinc /usr/lib/ruby/2.0.0/universal-darwin13/ruby.h does not exist
    I found such file in eclipse ruby and I copied in /usr/lib/ruby/2.0.0/universal-darwin13
    Then I ran again the build script. the script ran with few message and one error:

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning:
    Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning:
    Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning:
    Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning:
    Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning:
    Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning:
    Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning:
    Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning:
    Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning:
    Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning:
    Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning:
    Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning:
    Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning:
    Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning:
    Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: warning:
    Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map> [-W#warnings]

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2: warning:
    Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set> [-W#warnings]

    And at the end I got this error:

    gtfUiDialog_moc.cc:13:2: error: "The header file 'gtfUiDialog.h' doesn't include <QObject>."
    #error "The header file 'gtfUiDialog.h' doesn't include <QObject>."
    ^
    1 error generated.
    make[1]: *** [gtfUiDialog.dm] Error 1
    /Users/geevy/desktop/klayout/src/Makefile.body:729: .dep: No such file or directory
    gcc -DQT_THREAD_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DHAVE_RUBY -DHAVE_RUBY_VERSION_CODE=20000 -MM -MG gtfUiDialog_moc.cc -I/Users/geevy/desktop/klayout/src -I/Users/geevy/desktop/klayout/src -I. -I/usr/include/qt4 -FQtGui -FQtCore -FQtXML -I/usr/lib/ruby/2.0.0/universal-darwin13 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin13 >gtfUiDialog.dm || (rm -rf gtfUiDialog.dm; exit 1)
    gtfUiDialog_moc.cc:13:2: error: "The header file 'gtfUiDialog.h' doesn't include <QObject>."
    #error "The header file 'gtfUiDialog.h' doesn't include <QObject>."
    ^
    1 error generated.
    make[1]: *** [gtfUiDialog.dm] Error 1
    make: *** [all] Error 1
    At the end I got an extra folder named: build.mac-leopard-gcc-release

    inside of it a folder named main, and a bunch of make files.

    Thanks,
    Geev
  • edited January 2014

    Hi Geev,

    KLayout is on Qt4 still. Qt5 is a major step and not necessarily compatible with Qt4. I did not port the code yet and would rather wait it to become somewhat more stable.

    Apart of that I know of some build issues with the clang compiler version used by MacOS. They will be fixed in the next minor release.

    Matthias

  • edited 7:48AM
    Thank you Matthias,
    The reason I tried Qt5 was because I was hoping to build the app for apple retina display screen. In current version of KLayout some of the menus are a bit blurred and hard to read.
    Thank you again for your comments.
Sign In or Register to comment.