KLayout for Mac Yosemite 10.10.1?

edited January 2015 in KLayout Support
Does anyone have a working copy of KLayout for Yosemite?

I just upgraded my primary machine from 10.9.2 to 10.10.1, and found my 0.23.3 version of KLayout that I compiled on 10.9.2 does not work anymore . I've tried to recompile but it fails. I've also gone back to the 0.23.2 version on the download page, but it doesn't work either. Any suggestions?

Thanks.
«1

Comments

  • edited November -1

    Hi,

    still lacking suitable Mac hardware I do not actively support MacOS. So I can just guess. Why won't it compile? Any error messages?

    Matthias

  • edited November -1
    Hi,

    I do have a Macbook running on Yosemite. KLayout is running fine on it. I just used the available dmg file in the download section. The release is 0.24 I guess. Have you tried to use the dmg file instead of compiling everything from the source?

    Regards
  • edited November -1
    First, both the 0.23.3 version I had compiled on my old machine and the 0.23.2 from the download page gave me a "wrong architecture" something error that I'd never seen before. I wonder if its because my version was originally compiled on a 10.8.x machine (Darwin12), and have carried it along from machine to machine. Now, using a Darwin14 kernel its crashing. But then again, a Macbook on Yosemite should also be using the Darwin14 kernel, so....????

    As for the compile, I was foolish to think it would work. The new machine has QT5 and XCode 6.1.1 loaded. My old script was expecting QT4 and XCode 5.x something. I just ran it without looking at it.

    Have you ever compiled with QT5? Suggestions?
  • edited November -1
    Hi,

    I am not sure about QT5, maybe matthias can comment on that. But for my own case I do have both libraries on my Macbook QT4 and QT5. I am quite sure QT4 is required to make it working. I do also have Darwin 14.0.0 system. I also have Xcode installed with the same 6.1.1 version. Again I have used the binary packaged to make it working but if you need more help I can try the compile procedure on my side. Just let me know? I can also make it step by step following your approach to see where is the blocking point?

    Kind regards
  • edited November -1

    Hello,

    Qt5 is somewhat, but not sufficiently compatible with Qt4, so you can't compile KLayout with Qt5. Sorry.

    Matthias

  • edited November -1
    Hi Matthias,

    I confirm compilation process is failing.

    I have downloaded the last source package named: klayout-r2594.tar.gz
    I have tried compiling it with the following command on Yosemite:

    ./build.sh -platform mac-leopard-gcc-release -qtbin /Developer/Tools/Qt -qtlib /Developer/Tools/Qt -qtlib /usr/lib -pylib /Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib


    during the compilation i have got the following error?


    gtfUiDialog_moc.cc:11:2: error: "The header file 'gtfUiDialog.h' doesn't include <QObject>."
    #error "The header file 'gtfUiDialog.h' doesn't include <QObject>."


    this is coming after:

    gcc -DQT_THREAD_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DHAVE_PYTHON -DHAVE_PYTHON_VERSION_CODE= -DHAVE_RUBY -DHAVE_RUBY_VERSION_CODE=20000 -MM -MG /Users/psalome/Documents/tar_files/KLAYOUT/klayout-r2594/src/tlDeferredExecution.cc -I/Users/psalome/Documents/tar_files/KLAYOUT/klayout-r2594/src -I/Users/psalome/Documents/tar_files/KLAYOUT/klayout-r2594/src -I. -I/usr/include/qt4 -FQtGui -FQtCore -FQtXML -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin14 >tlDeferredExecution.d || (rm -rf tlDeferredExecution.d; exit 1)
    /Developer/Tools/Qt/moc -o gtfUiDialog_moc.cc /Users/psalome/Documents/tar_files/KLAYOUT/klayout-r2594/src/gtfUiDialog.h
    gcc -DQT_THREAD_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DHAVE_PYTHON -DHAVE_PYTHON_VERSION_CODE= -DHAVE_RUBY -DHAVE_RUBY_VERSION_CODE=20000 -MM -MG gtfUiDialog_moc.cc -I/Users/psalome/Documents/tar_files/KLAYOUT/klayout-r2594/src -I/Users/psalome/Documents/tar_files/KLAYOUT/klayout-r2594/src -I. -I/usr/include/qt4 -FQtGui -FQtCore -FQtXML -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin14 >gtfUiDialog.dm || (rm -rf gtfUiDialog.dm; exit 1)



    Do you think there is an issue with the header file?

    Kind regards
  • edited November -1

    Hi psalome,

    That looks like a mixing of Qt4 and 5 - maybe moc is taken from Qt5 while the includes come from Qt4?

    Matthias

  • edited November -1
    Hi Matthias,

    Thanks for your feedback. I tried to make it myself from moc. Here is the result:

    /****************************************************************************
    ** Meta object code from reading C++ file 'gtfUiDialog.h'
    **
    ** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.5)
    **
    ** WARNING! All changes made in this file will be lost!
    *****************************************************************************/

    #include "gtfUiDialog.h"
    #if !defined(Q_MOC_OUTPUT_REVISION)
    #error "The header file 'gtfUiDialog.h' doesn't include <QObject>."
    #elif Q_MOC_OUTPUT_REVISION != 63
    #error "This file was generated using the moc from 4.8.5. It"
    #error "cannot be used with the include files from this version of Qt."
    #error "(The moc has changed too much.)"
    #endif


    Sounds like I am not running the right QT4 version. Do you agree? Which version do I need to install to make it working?

    Kind regards

    Pascal
  • edited November -1

    Hi Pascal,

    no, MOC is 4.8.5 which is still Qt4, so that is fine. Maybe it's the other way round and headers come from Qt5 ... I see that there are many -I statements, so maybe one of them leads to Qt headers too. It'd difficult to tell from my perspective. Anybody having a better idea?

    Matthias

  • edited January 2015

    A binary package for MacOS 10.10.1, Yosemite, is available on trial basis today (2015-01-18):

    Package : MacOS dmg style (compressed with bzip2)
    KLayout : 0.23.9
    Qt      : 4.8.6
    Ruby    : 1.9.3-p551
    

    Regards

    Kazzz

  • ksks
    edited November -1
    Thank you for the 23.9 Yosemite port!!!!!
  • edited November -1
    Hi Kazzz,

    thanks I will try it. Can you please shortly describe the procedure to make it working?

    Regards

    Pascal
  • edited November -1
    Hi,

    I have installed the new binary package easily and it works fine.
    Thanks again

    Pascal
  • edited November -1

    Hi Pascal,

    Thank you for testing the package, which I've made for the first time!
    Glad to hear that the binary package works fine.
    Regarding your query above, please refer to my memo below.
    Hope this also helps you.

    Regards,
    Kazzz

    #-----------------------------------------------------------------------
    # Building KLayout 0.23.9 on Mac OSX 10.10.1 Yosemite
    #
    # By Kazzz (Kazunari Sekigawa)
    # Dated: January 20, 2015
    # References:
    #  http://klayout.de/forum/comments.php?DiscussionID=558&page=1#Item_11
    #  http://klayout.de/forum/comments.php?DiscussionID=558&page=1#Item_13
    #-----------------------------------------------------------------------
    
    
    [1] My Mac ************************************************
    MacBookPro:~ sekigawakazunari$ system_profiler SPHardwareDataType
    Hardware:
    
        Hardware Overview:
    
          Model Name: MacBook Pro
          Model Identifier: MacBookPro9,2
          Processor Name: Intel Core i7
          Processor Speed: 2.9 GHz
          Number of Processors: 1
          Total Number of Cores: 2
          L2 Cache (per Core): 256 KB
          L3 Cache: 4 MB
          Memory: 16 GB
          Boot ROM Version: MBP91.00D3.B08
          SMC Version (system): 2.2f44
          :
          :
    
    [2] OS ****************************************************
    MacBookPro:~ sekigawakazunari$ uname -a
      Darwin MacBookPro.local 14.0.0 Darwin Kernel Version 14.0.0: \
      Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64
    
    
    [3] Whereabout of Mac Port ********************************
      Mac Port libraries exist under "/opt/local/" which is standard.
    
    
    [4] Qt ****************************************************
    MacBookPro:~ sekigawakazunari$ port installed | grep qt
      poppler-qt4-mac @0.26.3_0
      poppler-qt4-mac @0.26.4_0
      poppler-qt4-mac @0.26.5_0
      poppler-qt4-mac @0.28.1_0
      poppler-qt4-mac @0.29.0_0
      poppler-qt4-mac @0.30.0_0
      qt4-mac @4.8.6_0 (active)  <===== this one
    
    MacBookPro:work sekigawakazunari$ which qmake
      /opt/local/bin/qmake   <===== this one
    
    MacBookPro:work sekigawakazunari$ qmake --version
      QMake version 2.01a   <===== this one
      Using Qt version 4.8.6 in /opt/local/lib
    
    
    [5] Ruby **************************************************
    MacBookPro:~ sekigawakazunari$ port installed | grep ruby
      ruby19 @1.9.3-p484_0+doc
      ruby19 @1.9.3-p547_0+doc
      ruby19 @1.9.3-p550_0+doc
      ruby19 @1.9.3-p551_0+doc (active) <===== this one
      ruby_select @1.0_0 (active)
    
    
    [6] Compiler **********************************************
    MacBookPro:~ sekigawakazunari$ gcc --version
      Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr \
         --with-gxx-include-dir=/usr/include/c++/4.2.1
      Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
      Target: x86_64-apple-darwin14.0.0
      Thread model: posix
    
    MacBookPro:~ sekigawakazunari$ g++ --version
      Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr \
          --with-gxx-include-dir=/usr/include/c++/4.2.1
      Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
      Target: x86_64-apple-darwin14.0.0
      Thread model: posix
    
    [7] KLayout ***********************************************
    MacBookPro:work sekigawakazunari$ pwd
      /Users/sekigawakazunari/work
    
    MacBookPro:work sekigawakazunari$ ll
      total 0
      drwxr-xr-x   3 sekigawakazunari  staff   102  1 20 18:30 .
      drwx---r-x+ 90 sekigawakazunari  staff  3060  1 19 21:36 ..
      drwxr-xr-x@  9 sekigawakazunari  staff   306 12 31 05:37 klayout-0.23.9
    
    
    [8] Command for building **********************************
      $ [sudo] ./build.sh -with-qtbinding \
               -platform mac-leopard-gcc-release \
               -qtbin /opt/local/bin \
               -qtinc /opt/local/include \
               -qtlib /opt/local/lib \
               -rbinc /opt/local/include/ruby-1.9.1 \
               -rblib /opt/local/lib/libruby.1.9.1.dylib 2>&1 \
       | tee building-klayout.log
    
    *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+**+*+*+*+*+*+*+*
      Be patient! It will take about 90 min. to the next step.
      While building, you will see many warnings but ignore them.
    *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+**+*+*+*+*+*+*+*
    
    [9] After an error stop  **********************************
      !!! The build process does NOT gracefully end !!!
      More precisely, when building "strm2gds" command, an error is flagged
      and the process ends like:
    
    >> Undefined symbols for architecture x86_64:
    >>   "vtable for db::GDS2Writer", referenced from:
    >>       _main in strm2gds.o
    >>   NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
    >> ld: symbol(s) not found for architecture x86_64
    >> clang: error: linker command failed with exit code 1 (use -v to see invocation)
    >> make[1]: *** [strm2gds] Error 1
    >> make: *** [all] Error 1
    
      "strm2gds" is one of utility programs of "str*" family, which are
      normally built on Linux.
    
      Luckily, in spite of this compile error, the main program of KLayout
      has been successfully built like:
    
    MacBookPro:main sekigawakazunari$ pwd
      /Users/sekigawakazunari/work/klayout-0.23.9/build.mac-leopard-gcc-release/main
      MacBookPro:main sekigawakazunari$ ll -rt *klayout*
      -rwxr-xr-x  1 sekigawakazunari  staff  145193884  1 20 20:14 klayout
      -rwxr-xr-x  1 sekigawakazunari  staff  145189228  1 20 20:14 libklayout.so
    
      Hence ...
    
    
    [10] Manual installation  *********************************
      Goto the directory where "Makefile*" exist.
    
    MacBookPro:build.mac-leopard-gcc-release sekigawakazunari$ pwd
      /Users/sekigawakazunari/work/klayout-0.23.9/build.mac-leopard-gcc-release
      MacBookPro:build.mac-leopard-gcc-release sekigawakazunari$ ll
      total 24
      drwxr-xr-x     6 sekigawakazunari  staff     204  1 20 18:48 .
      drwxr-xr-x@   12 sekigawakazunari  staff     408  1 20 18:48 ..
      -rw-r--r--     1 sekigawakazunari  staff     881  1 20 18:48 Makefile
      -rw-r--r--@    1 sekigawakazunari  staff    1490  1 20 18:48 Makefile.conf
      -rw-r--r--     1 sekigawakazunari  staff     299  1 20 18:48 Makefile.env
      drwxr-xr-x  3285 sekigawakazunari  staff  111690  1 20 20:14 main
    
    $ make install  <===== issue this command
      Then you will get ...
    
    MacBookPro:bin.mac-leopard-gcc-release sekigawakazunari$ pwd
      /Users/sekigawakazunari/work/klayout-0.23.9/bin.mac-leopard-gcc-release
    
    MacBookPro:bin.mac-leopard-gcc-release sekigawakazunari$ ll
      total 0
      drwxr-xr-x   3 sekigawakazunari  staff  102  1 20 21:32 .
      drwxr-xr-x@ 13 sekigawakazunari  staff  442  1 20 21:32 ..
      drwxr-xr-x   3 sekigawakazunari  staff  102  1 20 21:32 klayout.app
    
    MacBookPro:bin.mac-leopard-gcc-release sekigawakazunari$ ll klayout.app/Contents/MacOS/
      total 283584
      drwxr-xr-x  3 sekigawakazunari  staff        102  1 20 21:42 .
      drwxr-xr-x  7 sekigawakazunari  staff        238  1 20 21:33 ..
      -rwxr-xr-x  1 sekigawakazunari  staff  145193884  1 20 21:32 klayout
    
      $ ./klayout.app/Contents/MacOS/klayout & <===== issue this command to start KLayout
                                                      then check the process
    
    MacBookPro:bin.mac-leopard-gcc-release sekigawakazunari$ ps -ef | grep klay
      501 66253 50153   0  9:49PM ttys017    0:02.70 ./klayout.app/Contents/MacOS/klayout
      501 66257 50153   0  9:49PM ttys017    0:00.00 grep klay
    
    
    [10] Generating DMG ***************************************
      The steps are captured in "making-dmg" directory of the released DMG.
    
    #---------
    # END
    #---------
    
  • edited November -1
    Hi Kazzz,

    thanks a lot. From your post I just realized my QT4 install was screwed up by QT5 install (just as Matthias mentioned earlier !!!!). I have reinstalled QT4 using macport and keep standard install for QT5. I tried the same procedure than you for building and it works. In fact I get exactly the same error: see here below
    ------------------------
    g++ -o strm2gds strm2gds.o libklayout.so /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib -L/opt/local/lib -F/opt/local/lib -framework QtGui -framework QtXML -framework QtCore -framework QtNetwork -framework QtSql -framework QtDesigner -lstdc++ -lz
    Undefined symbols for architecture x86_64:
    "vtable for db::GDS2Writer", referenced from:
    _main in strm2gds.o
    NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[1]: *** [strm2gds] Error 1
    make: *** [all] Error 1
    -------------------------------------------------------------------------------

    thanks again

    kind regards

    Pascal
  • edited November -1
    Hi Matthias,

    We do have issue while compiling with Yosemite with the file name str2gds.cc file.

    The issue seems coming from the line:

    tl::InputStream stream (infile);

    The definition of infile does not match the constructor definition ( if I am understanding it correctly).

    Definition is

    tl::InputStream stream (infile);

    Do you see any turn around to this problem?

    Kind regards

    Pascal
  • edited November -1

    Hi Pascal,

    the strm2gds target is an optional test utility - if you don't need it you can skip it.

    The message basically says that the vtable (which is part of the internals of the compiler's layout of the class) is missing, not the constructor. Apparently that vtable is not exported from the libklayout.so object.

    I don't observe that issue on Linux. Maybe there is a substantial difference between MacOS and Linux linker implementations?

    Matthias

  • edited November -1

    Hello Pascal,

    I think I've found the root cause of the linker error we faced.
    The code block below is a patch.
    You may apply this patch or manually edit "dbGDS2Writer.cc"
    to remove 5 "inline" keywords.

    By applying the patch, I could successfully rebuild 0.23.9 on both
    (1) Mac 10.10.1 Yosemite
    and
    (2) Ubuntu Linux 12.04 LTS (64-bit)
    including "str*" utility tools.

    One minor problem was found in "build.sh" that calls "klayout"
    with "-v" and "-h" options at the end.
    In Mac environment, the path to "klayout" is not correct.
    Since this is a minor problem, I may able to modify "build.sh"
    so that it gracefully ends in Mac environment, too.
    This patch will be tested and sent to Matthias for future release.

    With warm regards,
    Kazzz

    --- dbGDS2Writer.cc 2014-12-31 05:37:58.000000000 +0900
    +++ dbGDS2Writer-mac.cc 2015-01-24 22:25:06.000000000 +0900
    @@ -46,45 +46,45 @@
       m_progress.set_unit (1024 * 1024);
     }
    
    -inline void
    +void
     GDS2Writer::write_byte (unsigned char b)
     {
       mp_stream->put ((const char *) &b, 1);
     }
    
    -inline void
    +void
     GDS2Writer::write_record_size (int16_t i)
     {
       gds2h (i);
       mp_stream->put ( (char*)(&i), sizeof (i));
     }
    
    -inline void
    +void
     GDS2Writer::write_record (int16_t i)
     {
       gds2h (i);
       mp_stream->put ( (char*)(&i), sizeof (i));
     }
    
    -inline void
    +void
     GDS2Writer::write_short (int16_t i)
     {
       gds2h (i);
       mp_stream->put ( (char*)(&i), sizeof (i));
     }
    
    -inline void
    +void
     GDS2Writer::write_int (int32_t l)
     {
       gds2h (l);
       mp_stream->put ( (char*)(&l), sizeof (l));
     }
    
    -void
    +void
     GDS2Writer::write_double (double d)
     {
       char b[8];
    -
    +
       b[0] = 0;
       if (d < 0) {
         b[0] = char (0x80);
    @@ -117,7 +117,7 @@
       mp_stream->put (b, sizeof (b));
     }
    
    -void
    +void
     GDS2Writer::write_time (const short *t)
     {
       for (unsigned int i = 0; i < 6; ++i) {
    @@ -125,7 +125,7 @@
       }
     }
    
    -void
    +void
     GDS2Writer::write_string (const char *t)
     {
       size_t l = strlen (t);
    @@ -135,7 +135,7 @@
       }
     }
    
    -void
    +void
     GDS2Writer::write_string (const std::string &t)
     {
       size_t l = t.size ();
    @@ -145,7 +145,7 @@
       }
     }
    
    -void
    +void
     GDS2Writer::progress_checkpoint ()
     {
       m_progress.set (mp_stream->pos ());
    
  • edited November -1
    Hello Kazzz,

    Thanks for this valuable input. I was working myself on that subject too. I was also able to compile everything but in a different way than you. I only changed the Makefile.rule in order to link manually the failing library. I will try your input but I'd like to understand why on os x the link is not done properly. I will continue searching and come back to you. I wonder if the library is done properly on os x.

    Kind regards

    Pascal
  • edited January 2015

    Thanks, Kazzz. The Linux linker will emit Symbol definitions for inlined Functions too. Apparently the Mac Linker doesn't. I'll check whether removing the inline keyword has a performance impact and remove it if not.

    Best regards,

    Matthias

  • edited November -1

    Hello Matthias,

    I've found that the 21 *.cc files listed below contain the "inline" function-specifier.
    I've removed all and rebuilt from scratch on OSX Yosemite.
    Building was successful as expected.
    As you pointed out, performance is the main concern.
    Please let us know about it once you got some views.

    Warm regards,
    Kazzz

    Modified /trunk/klayout-0.23.9/src/dbEdgeProcessor.cc
    Modified /trunk/klayout-0.23.9/src/dbFuzzyCellMapping.cc
    Modified /trunk/klayout-0.23.9/src/dbGDS2Reader.cc
    Modified /trunk/klayout-0.23.9/src/dbGDS2ReaderBase.cc
    Modified /trunk/klayout-0.23.9/src/dbGDS2WriterBase.cc
    Modified /trunk/klayout-0.23.9/src/dbMatrix.cc
    Modified /trunk/klayout-0.23.9/src/dbOASISReader.cc
    Modified /trunk/klayout-0.23.9/src/dbOASISWriter.cc
    Modified /trunk/klayout-0.23.9/src/dbRegion.cc
    Modified /trunk/klayout-0.23.9/src/dbShapes.cc
    Modified /trunk/klayout-0.23.9/src/dbShapes2.cc
    Modified /trunk/klayout-0.23.9/src/extDiffToolDialog.cc
    Modified /trunk/klayout-0.23.9/src/gtf.cc
    Modified /trunk/klayout-0.23.9/src/imgPropertiesPage.cc
    Modified /trunk/klayout-0.23.9/src/layGenericSyntaxHighlighter.cc
    Modified /trunk/klayout-0.23.9/src/layRedrawThreadWorker.cc
    Modified /trunk/klayout-0.23.9/src/tlDataMapping.cc
    Modified /trunk/klayout-0.23.9/src/tlStream.cc
    Modified /trunk/klayout-0.23.9/src/tlString.cc
    Modified /trunk/klayout-0.23.9/src/tlVariant.cc
    Modified /trunk/klayout-0.23.9/src/dbGDS2Writer.cc
    
  • edited November -1
    Hi Matthias and Kazzz,

    The other turn around would be to change the Makefile.body to insert dbGDS2Writer.o as a dependency for strm2gds and strmclip rules. This will make something like this:

    strmclip: strmclip.o dbGDS2Writer.o $(LIBKLAYOUT)
    $(LINK) $(LOPT) $@ $+ $(ALL_LIBS) $(LIBS_EXE)

    This will not change anything to the performance and compile nicely on Yosemite.

    Kind regards
  • edited November -1
    Hi Matthias,

    It sounds like compiling a stable release on Yosemite -osX is now solved by considering either way described here above. I start looking into development release. Starting from r2510 to r2631, I got the same error listed below:

    src/gsiTypes.h:776:7: error: no matching constructor for initialization of 'gsi::ArgSpecBase'
    : ArgSpecBase (other)


    src/gsiTypes.h:713:19: note: candidate constructor (the implicit copy constructor) not viable: cannot convert argument of
    incomplete type 'const ArgSpec<void>' to 'const gsi::ArgSpecBase'
    class KLAYOUT_DLL ArgSpecBase
    ^
    src/gsiTypes.h:720:3: note: candidate constructor not viable: cannot convert argument of incomplete type
    'const ArgSpec<void>' to 'const std::string' (aka 'const basic_string<char, char_traits<char>, allocator<char> >')
    ArgSpecBase (const std::string &name)
    ^
    src/gsiTypes.h:716:3: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
    ArgSpecBase ()
    ^
    src/gsiTypes.h:752:3: note: candidate constructor not viable: requires at least 2 arguments, but 1 was provided
    ArgSpecBase (const std::string &name, bool has_default, const std::string &init_doc = std::string ())

    Do you think the issue is quite similar to the previous case?

    Kind regards
  • edited November -1

    Hi all,

    thanks for taking care of that!

    I don't think the inline keyword is an issue, but it will hide the implementation in the case of the GDS reader.

    The issue mentioned in the last post are related to the clang toolchain. They make sense and they are fixed already, but being found in the Bangalore area currently I have trouble hitting the "upload snapshot" button on my Munich system right now.

    See you later,

    Matthias

  • edited November -1
    Hi Matthias,

    I'd like to keep on progressing on the development version for OS X if possible.
    Would it be possible for you to upload the corrected version of the soft ?
    I will investigate on the python integration for MAC.

    kind regards
  • edited November -1

    The Python integration was a snapshot of a fairly stable version. I'll try to provide a new one if possible, but I have to achieve some stability in the development branch first.

    Matthias

  • edited November -1
    Thank you Matthias
    Pascal
  • edited November -1

    Hi there,

    I have found problems running DRC in KLayout for the Mac and have tried to build KLayout from source using the instructions on this page.

    At first I had a problem in that the build script seems to be looking in the wrong place for the "QtGui" framework - or alternatively Mac Ports is installing the framework in the wrong place.

    ld: framework not found QtGui
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[1]: *** [klayout] Error 1
    make: *** [all] Error 1
    

    I managed to fix this by creating a whole bunch of symbolic links from /opt/local/Library/Frameworks to /opt/local/lib.

    Having done this I can build KLayout (albeit crashing on strm2gds as described above).

    However, when I run the tool and load some layout, it displays incorrectly. Parts of the layout are missing and other parts of the layout appear to be in the wrong location - and then disappear when one zooms in.

    Has anyone else experienced this problem? If so can you give me a clue as to what's going wrong?

    Here's some info on my setup:

    port installed | grep qt
      qt4-creator-mac @2.8.1_0 (active)
      qt4-mac @4.8.7_0 (active)
      qt4-mac-sqlite3-plugin @4.8.7_0 (active)
    
    port installed | grep ruby
      ruby @1.8.7-p374_0 (active)
      ruby19 @1.9.3-p551_1+doc (active)
      ruby_select @1.0_0 (active)
    
    ./build.sh -with-qtbinding \
        -platform mac-leopard-gcc-release \
        -qtbin /opt/local/bin \
        -qtinc /opt/local/include \
        -qtlib /opt/local/lib \
        -rbinc /opt/local/include/ruby-1.9.1 \
        -rblib /opt/local/lib/libruby.1.9.1.dylib \
        2>&1  | tee building-klayout.log
    

    BTW: Is anyone else having problems running DRC on MacOS KLayout?

  • edited July 2015

    Hello,

    I have faced a similar problem while building the latest Mac binary package
    "klayout-0.23.11-MacOSX-Yosemite-1-Qt487mp.dmg.bz2".
    Please note that the whole works have been done on OSX 10.10.3.
    Hope this comment will help you.

    Kazzz

    (1) My setup is as below:

    MacBookPro{sekigawa}(7)$ port installed active | grep qt4
      poppler-qt4-mac @0.34.0_0 (active)
      py-pyqt4 @4.11.4_2 (active)
      py27-pyqt4 @4.11.4_2 (active)
      qt4-mac @4.8.7_0 (active)
      qt4-mac-mariadb-plugin @4.8.7_0 (active)
      qwt52 @5.2.3_0+qt4 (active)
    
    MacBookPro{sekigawa}(9)$ port installed active | grep ruby
      ruby19 @1.9.3-p551_1+doc (active)
      ruby_select @1.0_0 (active)
    
    MacBookPro{sekigawa}(16)$ cat Ruby19-BuildMyKlayout.sh
    ./build.sh -with-qtbinding \
                    -platform mac-yosemite-gcc-release  \
                    -qtbin /opt/local/bin \
                    -qtinc /opt/local/include \
                    -qtlib /opt/local/lib \
                    -rbinc /opt/local/include/ruby-1.9.1 \
                    -rblib /opt/local/lib/libruby.1.9.1.dylib 2>&1 \
                    | tee building-klayout.log
    

    (2) I have modified "build.sh"

    #!/bin/sh
    
    EXEC_NAME=klayout
    IS_MAC="no"
    EXEC_HOLDER=""
    OTHER_BIN=""
    
    CURR_DIR=`pwd`
    PLATFORM="linux-32-gcc-release"
    SOURCE=$CURR_DIR/src
    RUN_MAKE=1
    GCC_MINGW=0
    WIN_CYGWIN=0
    HAVE_QTBINDINGS=0
    HAVE_64BIT_COORD=0
    
    case `uname` in
    MINGW32*)
      PLATFORM="win-32-mingw-release"
      ;;
    CYGWIN*)
      PLATFORM="win-32-mingw-release"
      # On cygwin, provide a windows path in SOURCE
      if ( cygpath -m $CURR_DIR >/dev/null 2>/dev/null ); then
        WIN_CYGWIN=1
        SOURCE=`cygpath -m $CURR_DIR`/src
        if ( gcc -mno-cygwin -MM -MG -x c++ $SOURCE/tlLog.cc -I$SOURCE >/dev/null 2>/dev/null ); then
          GCC_MINGW=1
        else
          echo "*** ERROR: detected cygwin build environment but with a gcc that is a native Windows MinGW compiler"
          exit 1
        fi
      else
        echo "*** ERROR: cannot run cygpath"
        exit 1
      fi
      ;;
    Darwin*)
      PLATFORM="mac-yosemite-gcc-release"
      EXEC_HOLDER="klayout.app/Contents/MacOS"
      ;;
    *)
      # Assume Linux for the remaining variants
      case `arch` in
      x86_64)
        PLATFORM="linux-64-gcc-release"
        ;;
      *)
        PLATFORM="linux-32-gcc-release"
        ;;
      esac
      ;;
    esac
    
    # Initialize the Qt paths
    if [ "$QTDIR" != "" ]; then
      qtdir_wo_backslash=`echo "$QTDIR" | sed 's/\\\\/\\//g'`
      QTLIB="$qtdir_wo_backslash/lib"
      QTINCLUDE="$qtdir_wo_backslash/include"
      QTBIN="$qtdir_wo_backslash/bin"
    else
      QTLIB="/usr/lib"
      QTINCLUDE="/usr/include/qt4"
      QTBIN="/usr/bin"
    fi
    
    RUBYINCLUDE=""
    RUBYINCLUDE2=""
    RUBYLIBFILE=""
    RUBYVERSIONCODE=""
    
    RUBY=""
    BUILD=""
    BIN=""
    
    MAKE_OPT=""
    
    while [ "$*" != "" ]; do
      a=$1
      shift
    
      case $a in
      -qt)
        QTLIB="$1/lib"
        QTBIN="$1/bin"
        QTINCLUDE="$1/include"
        shift
        ;;
      -with-qtbinding)
        HAVE_QTBINDINGS=1
        ;;
      -with-64bit-coord)
        HAVE_64BIT_COORD=1
        ;;
      -qtlib)
        QTLIB="$1"
        shift
        ;;
      -qtbin)
        QTBIN="$1"
        shift
        ;;
      -qtinc)
        QTINCLUDE="$1"
        shift
        ;;
      -platform)
        PLATFORM="$1"
        shift
        ;;
      -ruby)
        RUBY="$1"
        shift
        ;;
      -rbvers)
        RUBYVERSIONCODE="$1"
        shift
        ;;
      -rbinc)
        RUBYINCLUDE="$1"
        shift
        ;;
      -rbinc2)
        RUBYINCLUDE2="$1"
        shift
        ;;
      -rblib)
        RUBYLIBFILE="$1"
        shift
        ;;
      -build)
        BUILD="$1"
        shift
        ;;
      -bin)
        BIN="$1"
        shift
        ;;
      -dry-run)
        RUN_MAKE=0
        ;;
      -option)
        MAKE_OPT="$MAKE_OPT $1"
        shift
        ;;
      -h|--help|-help)
        echo "usage: build [options]"
        echo ""
        echo "options:"
        echo "  -qt <dir>         Set Qt installation directory if Qt is installed in a"
        echo "                    common directory (-prefix path, default is '/usr/lib/qt4')."
        echo "                    This will set -qtbin to <dir>/bin, -qtlib to <dir>/lib"
        echo "                    and -qtinc to <dir>/include."
        echo "  -qtbin <dir>      Set Qt tools directory explicitly"
        echo "  -qtinc <dir>      Set Qt header directory explicitly"
        echo "  -qtlib <dir>      Set Qt library directory explicitly"
        echo "  -ruby <prog>      Use ruby interpreter 'prog'"
        echo "  -platform <key>   Select a platform"
        echo "  -build <path>     Directory where to do the build"
        echo "  -bin <path>       Directory where to install the binary"
        echo "  -option <option>  'make' options (i.e. -j2)"
        echo ""
        echo "  -with-qtbinding   Create Qt bindings for ruby scripts"
        echo "  -with-64bit-coord Use long (64bit) coordinates - EXPERIMENTAL FEATURE"
        echo "                    (only available for gcc>=4.4 for 64bit build)"
        echo ""
        echo "  -dry-run          Don't build"
        echo ""
        echo "Special options (normally determined from ruby installation):"
        echo "  -rblib <file>     Location of the .so/.dll to link for Ruby support"
        echo "  -rbinc <dir>      Location of the Ruby headers (in particular 'ruby.h')"
        echo "                    -rbinc and -rblib must be set to enable Ruby support"
        echo "  -rbinc2 <dir>     Second include path for Ruby 1.9 (containing 'ruby/config.h')"
        echo "  -rbvers <xyyzz>   Ruby version code"
        echo ""
        echo "Available platforms are:"
        for pf in `ls -1 config/*.conf.*`; do
          echo $pf | sed "s/config\/Makefile\.conf\./  /"
        done
        exit 0
        ;;
      *)
        echo "*** ERROR: unknown option $a (use -help to show options)"
        exit 1
        ;;
      esac
    
    done
    
    echo "Scanning installation .."
    echo ""
    
    # if not given, locate ruby interpreter (prefer 1.9, then default, finally 1.8 as fallback)
    for ruby in "ruby1.9" "ruby" "ruby1.8"; do
      if [ "$RUBY" = "" ] && [ "`$ruby -v 2>/dev/null`" != "" ]; then
        RUBY="$ruby"
      fi
    done
    if [ "$RUBY" != "" ]; then
    
      echo "Using ruby interpreter: $RUBY"
    
      if [ "`$RUBY -e 'puts 1' 2>/dev/null`" != "1" ]; then
        echo "*** ERROR: unable to run ruby interpreter $RUBY"
        exit 1
      fi
    
      # Get ruby version
      if [ "$RUBYVERSIONCODE" = "" ]; then
        RUBYVERSIONCODE=`$RUBY -rrbconfig -e "puts (RbConfig::CONFIG['MAJOR'] || 0).to_i*10000+(RbConfig::CONFIG['MINOR'] || 0).to_i*100+(RbConfig::CONFIG['TEENY'] || 0).to_i"`
      fi
      echo "    Ruby version code is $RUBYVERSIONCODE"
    
      # Get ruby installation files
      if [ "$RUBYLIBFILE" = "" ]; then
        RUBYLIBFILENAME=`$RUBY -rrbconfig -e "puts (RbConfig::CONFIG['LIBRUBY_SO'] || '')"`
        if [ "$RUBYLIBFILENAME" = "" ]; then
          RUBYLIBFILENAME=`$RUBY -rrbconfig -e "puts (RbConfig::CONFIG['LIBRUBY_A'] || '')"`
        fi
        if [ "$RUBYLIBFILENAME" = "" ]; then
          echo "*** WARNING: Could not get ruby library name"
        else
          RUBYLIBFILEPATH=`$RUBY -rrbconfig -e "puts (RbConfig::CONFIG['libdir'] || '')"`
          if [ "$RUBYLIBFILEPATH" = "" ]; then
            echo "*** WARNING: Could not get ruby library path"
          else
            RUBYLIBFILE="$RUBYLIBFILEPATH/$RUBYLIBFILENAME"
            echo "    Ruby library found: $RUBYLIBFILE"
          fi
        fi
      fi
    
      if [ "$RUBYLIBFILE" != "" ]; then
        RUBYHDRDIR=`$RUBY -rrbconfig -e "puts (RbConfig::CONFIG['rubyhdrdir'] || '')"`
        if [ "$RUBYHDRDIR" = "" ]; then
          if [ "$RUBYINCLUDE" = "" ]; then
            RUBYINCLUDE=`$RUBY -rrbconfig -e "puts (RbConfig::CONFIG['archdir'] || '')"`
          fi
          echo "    Ruby headers found: $RUBYINCLUDE"
        else
          if [ "$RUBYINCLUDE" = "" ]; then
            RUBYINCLUDE="$RUBYHDRDIR"
          fi
          if [ "$RUBYINCLUDE2" = "" ]; then
            RUBYINCLUDE2="$RUBYHDRDIR"/`$RUBY -rrbconfig -e "puts (RbConfig::CONFIG['arch'] || '')"`
          fi
          echo "    Ruby headers found: $RUBYINCLUDE and $RUBYINCLUDE2"
        fi
      fi
    
      echo "    Ruby installation is in:"
      echo "    - $RUBYLIBFILE (lib)"
      echo "    - $RUBYINCLUDE (includes)"
      echo "    - $RUBYINCLUDE2 (config for 1.9.x)"
      echo ""
    
    fi
    
    echo "Qt installation directory is $QTLIB (lib), $QTBIN (tools) and $QTINCLUDE (includes)"
    if [ $HAVE_QTBINDINGS != 0 ]; then
      echo "    Qt bindings enabled"
    fi
    echo ""
    
    echo "Platform is $PLATFORM"
    if [ $HAVE_64BIT_COORD != 0 ]; then
      echo "    64 bit coordinates enabled"
    fi
    
    gcc_path=`type gcc 2>/dev/null`
    if [ "$gcc_path" = "" ]; then
      echo "*** ERROR: unable to locate gcc in path"
      exit 1
    fi
    
    if [ ! -r config/Makefile.conf.$PLATFORM ]; then
      echo "*** ERROR: unknown platform $PLATFORM"
      exit 1
    fi
    
    case $PLATFORM in
    mac-*)
      IS_MAC="yes"
      echo "*** WARNING: no check done of Qt-headers."
      ;;
    *)
      if [ ! -r $QTINCLUDE/QtCore/Qt ]; then
        echo "*** ERROR: no Qt headers in $QTINCLUDE"
        exit 1
      fi
      ;;
    esac
    
    if [ ! -r $QTBIN/moc ]; then
      echo "*** ERROR: unable to locate Qt MOC in $QTBIN"
      exit 1
    fi
    if [ ! -r $QTBIN/uic ]; then
      echo "*** ERROR: unable to locate Qt UIC in $QTBIN"
      exit 1
    fi
    
    if [ "$RUBYINCLUDE" != "" ]; then
      HAVE_RUBY=1
      if [ "$RUBYLIBFILE" = "" ]; then
        echo "*** ERROR: -rblib not specified or library path cannot be determined from ruby installation"
        exit 1
      fi
      if [ "$RUBYVERSIONCODE" = "" ]; then
        echo "*** ERROR: -rbvers not specified or version cannot be determined from ruby installation"
        exit 1
      fi
      if [ ! -f "$RUBYINCLUDE/ruby.h" ]; then
        echo "*** ERROR: wrong -rbinc path: $RUBYINCLUDE/ruby.h does not exist or is not a file"
        exit 1
      fi
      if [ "$RUBYINCLUDE2" != "" ] && [ ! -f "$RUBYINCLUDE2/ruby/config.h" ]; then
        echo "*** ERROR: wrong -rbinc2 path: $RUBYINCLUDE2/ruby/config.h does not exist or is not a file"
        exit 1
      fi
      if [ ! -f "$RUBYLIBFILE" ]; then
        echo "*** ERROR: wrong -rblib path: $RUBYLIBFILE does not exist or not a file"
        exit 1
      fi
    else
      HAVE_RUBY=0
    fi
    
    if [ "$BUILD" = "" ]; then
      BUILD=$CURR_DIR/build.$PLATFORM
    fi
    if [ "$BIN" = "" ]; then
      BIN=$CURR_DIR/bin.$PLATFORM
    else
      mkdir -p $BIN
      cd $BIN
      BIN=`pwd`
      cd $CURR_DIR
    fi
    
    if ( gmake -v >/dev/null 2>/dev/null ); then
      MAKE_PRG=gmake
    else
      MAKE_PRG=make
    fi
    
    mkdir -p $BUILD
    echo "WIN_CYGWIN=$WIN_CYGWIN"  >$BUILD/Makefile
    echo "EXEC_NAME=$EXEC_NAME"   >>$BUILD/Makefile
    echo "OTHER_BIN=$OTHER_BIN"   >>$BUILD/Makefile
    echo "INSTALL_BINDIR=$BIN"    >>$BUILD/Makefile
    cat   src/Makefile.top        >>$BUILD/Makefile
    cp -f config/Makefile.conf.$PLATFORM $BUILD/Makefile.conf
    
    mkdir -p $BUILD/main
    echo "TOP_SOURCE=$SOURCE" >$BUILD/main/Makefile
    echo "SOURCE=$SOURCE" >>$BUILD/main/Makefile
    echo 'default: all' >>$BUILD/main/Makefile
    echo 'include ../Makefile.env' >>$BUILD/main/Makefile
    echo 'include ../Makefile.conf' >>$BUILD/main/Makefile
    echo 'include $(SOURCE)/Makefile.body' >>$BUILD/main/Makefile
    
    PLUGINS=""
    if [ -d src ] && [ -d src/plugins ]; then
      cd src/plugins
      PLUGINS=`echo *`
      cd ../..
      for plugin in $PLUGINS; do
        mkdir -p $BUILD/$plugin
        echo "TOP_SOURCE=$SOURCE" >$BUILD/$plugin/Makefile
        echo "SOURCE=$SOURCE/plugins/$plugin" >>$BUILD/$plugin/Makefile
        echo 'default: all' >>$BUILD/$plugin/Makefile
        echo 'include ../Makefile.env' >>$BUILD/$plugin/Makefile
        echo 'include ../Makefile.conf' >>$BUILD/$plugin/Makefile
        echo 'include $(SOURCE)/Makefile.body' >>$BUILD/$plugin/Makefile
      done
    fi
    
    echo "QTBIN=$QTBIN" >$BUILD/Makefile.env
    echo "QTINCLUDE=$QTINCLUDE" >>$BUILD/Makefile.env
    echo "QTLIB=$QTLIB" >>$BUILD/Makefile.env
    echo "PLUGINS=$PLUGINS" >>$BUILD/Makefile.env
    echo "RUBYLIBFILE=$RUBYLIBFILE" >>$BUILD/Makefile.env
    echo "RUBYINCLUDE=$RUBYINCLUDE" >>$BUILD/Makefile.env
    echo "RUBYINCLUDE2=$RUBYINCLUDE2" >>$BUILD/Makefile.env
    echo "RUBYVERSIONCODE=$RUBYVERSIONCODE" >>$BUILD/Makefile.env
    echo "HAVE_RUBY=$HAVE_RUBY" >>$BUILD/Makefile.env
    echo "HAVE_QTBINDINGS=$HAVE_QTBINDINGS" >>$BUILD/Makefile.env
    echo "HAVE_64BIT_COORD=$HAVE_64BIT_COORD" >>$BUILD/Makefile.env
    
    echo "Building plugins: $PLUGINS"
    echo ""
    
    if [ $RUN_MAKE = 0 ]; then
      exit 0
    fi
    
    # -- Running build  --
    
    echo "Running build .."
    echo "$MAKE_PRG"
    cd $BUILD
    $MAKE_PRG $MAKE_OPT all || exit 1
    echo ""
    
    cd $CURR_DIR
    
    # -- Installing binaries  --
    
    echo "Installing binaries .."
    cd $BUILD
    $MAKE_PRG install
    cd $CURR_DIR
    echo "Build done."
    
    if [ $WIN_CYGWIN = 0 ]; then
      if [ "$IS_MAC" = "yes" ]; then
        EXEC_FULL_PATH=$BIN/$EXEC_HOLDER/$EXEC_NAME
      else
        EXEC_FULL_PATH=$BIN/$EXEC_NAME
      fi
      echo ""
      echo "Final binary is ready in $EXEC_FULL_PATH."
      echo "To run it, you may need to add the following to your LD_LIBRARY_PATH:"
      echo "$QTLIB"
    
      LD_LIBRARY_PATH=$QTLIB:$LD_LIBRARY_PATH
      $EXEC_FULL_PATH -v
      $EXEC_FULL_PATH -h
    fi
    
    exit 0
    

    (3) I have newly created "Makefile.conf.mac-yosemite-gcc-release" under "config" directory.

    # Configuration file for
    # gcc, MacOSX Yosemite (10.10), 64bit, with Mac Port's Qt
    # release build
    #
    # gcc should be LLVM like
    #    MacBookPro:~ sekigawakazunari$ gcc --version
    #    Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr \
    #                     --with-gxx-include-dir=/usr/include/c++/4.2.1
    #    Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
    #    Target: x86_64-apple-darwin14.3.0
    #    Thread model: posix
    
    # Compiler general
    #----- To use the latest Qt provided by Mac Port; in other words, not to use OS' one ----
    INC=-I$(TOP_SOURCE) -I$(SOURCE) -I. -I$(QTINCLUDE)
    #INC=-I$(TOP_SOURCE) -I$(SOURCE) -I. -I$(QTINCLUDE) -FQtGui -FQtCore -FQtXML
    #----------------------------------------------------------------------------------------
    DEFS=-DQT_THREAD_SUPPORT -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII
    
    # C++
    CXX=gcc
    CXXOPT_DEP=-MM -MG
    CXXWARN=-Wall -pedantic -Wno-deprecated -Woverloaded-virtual \
           -Wsign-promo -Wsynth -Wno-long-long -Wno-strict-aliasing
    CXXOPT=-c -O2 -m64 -o
    #CXXOPT=-c -O3 -m64 -o
    CXXOPT_SO=-fPIC $(CXXOPT)
    
    # C
    CC=gcc
    CCOPT_DEP=-MM -MG
    CCWARN=
    CCOPT=-c -O2 -m64 -o
    #CCOPT=-c -O3 -m64 -o
    CCOPT_SO=-fPIC $(CCOPT)
    
    # Linker options
    AR=ar rcs
    LINK=g++
    LOPT=-m64 -o
    LOPT_SO=-m64 -dynamiclib -o
    #----- To use the latest Qt provided by Mac Port; in other words, not to use OS' one ----
    LIBS=-L$(QTLIB) -lQtGui -lQtCore -lQtXml -lQtNetwork -lQtSql -lQtDesigner -lstdc++ -lz
    #LIBS=-L$(QTLIB) -F$(QTLIB) -framework QtGui -framework QtXML -framework QtCore -framework QtNetwork -framework QtSql -framework QtDesigner -lstdc++ -lz
    #----------------------------------------------------------------------------------------
    
    # Install target
    
    .PHONY: install
    install:
        mkdir -p $(INSTALL_BINDIR)
        rm -rf $(INSTALL_BINDIR)/klayout.app
        mkdir -p $(INSTALL_BINDIR)/klayout.app/Contents/MacOS/
        cp main/$(EXEC_NAME) $(INSTALL_BINDIR)/klayout.app/Contents/MacOS
        for bin in $(OTHER_BIN) ; \
        do \
          cp main/$$bin $(INSTALL_BINDIR)/klayout.app/Contents/MacOS/ ; \
        done
        for plugin in $(PLUGINS) ; \
        do \
          cp $$plugin/*.so $(INSTALL_BINDIR)/klayout.app/Contents/MacOS/ ; \
        done
        chmod 755 $(INSTALL_BINDIR) $(INSTALL_BINDIR)/klayout.app/Contents/MacOS/*
        cd $(INSTALL_BINDIR) ; $(QTBIN)/macdeployqt klayout.app ; cd -
        cp ../src/logo.icns $(INSTALL_BINDIR)/klayout.app/Contents/Resources/klayout.icns
        cp ../src/Info.plist $(INSTALL_BINDIR)/klayout.app/Contents/
    

    (*) The executable links libraries as below.

    MacBookPro{sekigawa}(9)$ otool -L klayout
    klayout:
      @executable_path/../Frameworks/libruby.1.9.1.dylib (compatibility version 1.9.1, current version     1.9.1)
      @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0,     current version 4.8.7)
      @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0,     current version 4.8.7)
      @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml (compatibility version 4.8.0,     current version 4.8.7)
      @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.    0, current version 4.8.7)
      @executable_path/../Frameworks/QtSql.framework/Versions/4/QtSql (compatibility version 4.8.0,     current version 4.8.7)
      @executable_path/../Frameworks/QtDesigner.framework/Versions/4/QtDesigner (compatibility version 4.8    .0, current version 4.8.7)
      /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
      @executable_path/../Frameworks/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
    
  • edited July 2015

    Hello,

    One more comment.

    I have not run DRC but found another issue while browsing a GDS2 file.
    After several trials, I concluded that the cause was
    "too aggressive optimization" with "-O3" in CXXOPT macro, that is compiler issue.
    Hence, in "Makefile.conf.mac-yosemite-gcc-release", this has been changed to
    CXXOPT=-c -O2 -m64 -o

    The latest Mac binary package "klayout-0.23.11-MacOSX-Yosemite-1-Qt487mp.dmg.bz2"
    has incorporated this change.

    This version might resolve the DRC issue you are facing.

    Kazzz

Sign In or Register to comment.