From c0afa4bf5867a905f2af000977df0fd702eb7fb9 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Wed, 23 Aug 2017 09:58:39 +0200 Subject: [PATCH] Refactoring of resources and modules. --- .../pcell_declaration_helper.lym | 0 .../pcell_declaration_helper.lym | 0 src/db/db.pro | 4 +- src/db/dbResources.qrc | 6 + src/drc/drc.pro | 6 + .../drc/built-in-macros}/drc.lym | 0 .../drc/built-in-macros}/drc_interpreters.lym | 0 src/drc/drc/drc.pro | 23 ++++ src/drc/drc/drcCommon.h | 48 +++++++ src/drc/drc/drcForceLink.cc | 34 +++++ src/drc/drc/drcForceLink.h | 40 ++++++ src/drc/drc/drcResources.qrc | 6 + .../*.cc => drc/unit_tests/drcBasicTests.cc} | 8 ++ src/drc/unit_tests/unit_tests.pro | 16 +++ src/klayout.pri | 45 +++++-- src/klayout.pro | 2 + src/klayout_main/klayout.cc | 1 + src/lay/built_in_macros/index.txt | 6 - src/lay/built_in_pymacros/index.txt | 4 - src/lay/layBuildInMacros.qrc | 8 -- src/lym/lymMacro.cc | 117 +++++++++--------- src/rdb/rdb.pro | 2 + src/{common/*.h => rdb/rdbForceLink.cc} | 11 ++ src/rdb/rdbForceLink.h | 40 ++++++ src/with_all_libs.pri | 14 +-- 25 files changed, 342 insertions(+), 99 deletions(-) rename src/{lay/built_in_macros => db/built-in-macros}/pcell_declaration_helper.lym (100%) rename src/{lay/built_in_pymacros => db/built-in-pymacros}/pcell_declaration_helper.lym (100%) create mode 100644 src/drc/drc.pro rename src/{lay/built_in_macros => drc/drc/built-in-macros}/drc.lym (100%) rename src/{lay/built_in_macros => drc/drc/built-in-macros}/drc_interpreters.lym (100%) create mode 100644 src/drc/drc/drc.pro create mode 100644 src/drc/drc/drcCommon.h create mode 100644 src/drc/drc/drcForceLink.cc create mode 100644 src/drc/drc/drcForceLink.h create mode 100644 src/drc/drc/drcResources.qrc rename src/{common/*.cc => drc/unit_tests/drcBasicTests.cc} (89%) create mode 100644 src/drc/unit_tests/unit_tests.pro delete mode 100644 src/lay/built_in_macros/index.txt delete mode 100644 src/lay/built_in_pymacros/index.txt rename src/{common/*.h => rdb/rdbForceLink.cc} (89%) create mode 100644 src/rdb/rdbForceLink.h diff --git a/src/lay/built_in_macros/pcell_declaration_helper.lym b/src/db/built-in-macros/pcell_declaration_helper.lym similarity index 100% rename from src/lay/built_in_macros/pcell_declaration_helper.lym rename to src/db/built-in-macros/pcell_declaration_helper.lym diff --git a/src/lay/built_in_pymacros/pcell_declaration_helper.lym b/src/db/built-in-pymacros/pcell_declaration_helper.lym similarity index 100% rename from src/lay/built_in_pymacros/pcell_declaration_helper.lym rename to src/db/built-in-pymacros/pcell_declaration_helper.lym diff --git a/src/db/db.pro b/src/db/db.pro index 6141125ae..e61f0db2f 100644 --- a/src/db/db.pro +++ b/src/db/db.pro @@ -232,7 +232,7 @@ HEADERS = \ RESOURCES = \ dbResources.qrc -INCLUDEPATH += ../tl ../gsi -DEPENDPATH += ../tl ../gsi +INCLUDEPATH += $$TL_INC $$GSI_INC +DEPENDPATH += $$TL_INC $$GSI_INC LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi diff --git a/src/db/dbResources.qrc b/src/db/dbResources.qrc index 92058dab4..209e6dde3 100644 --- a/src/db/dbResources.qrc +++ b/src/db/dbResources.qrc @@ -2,4 +2,10 @@ std_font.gds + + built-in-macros/pcell_declaration_helper.lym + + + built-in-pymacros/pcell_declaration_helper.lym + diff --git a/src/drc/drc.pro b/src/drc/drc.pro new file mode 100644 index 000000000..6bac2a4b8 --- /dev/null +++ b/src/drc/drc.pro @@ -0,0 +1,6 @@ + +TEMPLATE = subdirs +SUBDIRS = drc unit_tests + +unit_tests.depends += drc + diff --git a/src/lay/built_in_macros/drc.lym b/src/drc/drc/built-in-macros/drc.lym similarity index 100% rename from src/lay/built_in_macros/drc.lym rename to src/drc/drc/built-in-macros/drc.lym diff --git a/src/lay/built_in_macros/drc_interpreters.lym b/src/drc/drc/built-in-macros/drc_interpreters.lym similarity index 100% rename from src/lay/built_in_macros/drc_interpreters.lym rename to src/drc/drc/built-in-macros/drc_interpreters.lym diff --git a/src/drc/drc/drc.pro b/src/drc/drc/drc.pro new file mode 100644 index 000000000..a203a36ff --- /dev/null +++ b/src/drc/drc/drc.pro @@ -0,0 +1,23 @@ + +DESTDIR = $$OUT_PWD/../.. +TARGET = klayout_drc + +include($$PWD/../../klayout.pri) +include($$PWD/../../lib.pri) + +DEFINES += MAKE_DRC_LIBRARY + +SOURCES = \ + drcForceLink.cc \ + +HEADERS = \ + drcCommon.h \ + drcForceLink.h \ + +RESOURCES = \ + drcResources.qrc + +INCLUDEPATH += $$TL_INC $$DB_INC $$GSI_INC $$LYM_INC $$RDB_INC +DEPENDPATH += $$TL_INC $$DB_INC $$GSI_INC $$LYM_INC $$RDB_INC +LIBS += -L$$DESTDIR -lklayout_tl -lklayout_db -lklayout_gsi -lklayout_lym -lklayout_rdb + diff --git a/src/drc/drc/drcCommon.h b/src/drc/drc/drcCommon.h new file mode 100644 index 000000000..f93d63d98 --- /dev/null +++ b/src/drc/drc/drcCommon.h @@ -0,0 +1,48 @@ + +/* + + KLayout Layout Viewer + Copyright (C) 2006-2017 Matthias Koefferlein + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + + +#if !defined(HDR_drcCommon_h) +# define HDR_drcCommon_h + +# if defined _WIN32 || defined __CYGWIN__ + +# ifdef MAKE_DRC_LIBRARY +# define DRC_PUBLIC __declspec(dllexport) +# else +# define DRC_PUBLIC __declspec(dllimport) +# endif +# define DRC_LOCAL + +# else + +# if __GNUC__ >= 4 +# define DRC_PUBLIC __attribute__ ((visibility ("default"))) +# define DRC_LOCAL __attribute__ ((visibility ("hidden"))) +# else +# define DRC_PUBLIC +# define DRC_LOCAL +# endif + +# endif + +#endif diff --git a/src/drc/drc/drcForceLink.cc b/src/drc/drc/drcForceLink.cc new file mode 100644 index 000000000..6475ac538 --- /dev/null +++ b/src/drc/drc/drcForceLink.cc @@ -0,0 +1,34 @@ + +/* + + KLayout Layout Viewer + Copyright (C) 2006-2017 Matthias Koefferlein + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + + +#include "drcForceLink.h" +#include "rdbForceLink.h" + +namespace drc +{ + int _force_link_f () + { + return 0; + } +} + diff --git a/src/drc/drc/drcForceLink.h b/src/drc/drc/drcForceLink.h new file mode 100644 index 000000000..82743935a --- /dev/null +++ b/src/drc/drc/drcForceLink.h @@ -0,0 +1,40 @@ + +/* + + KLayout Layout Viewer + Copyright (C) 2006-2017 Matthias Koefferlein + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + + +#ifndef HDR_drcForceLink +#define HDR_drcForceLink + +#include "drcCommon.h" + +/** + * @file Include this function to force linking of the drc module + */ + +namespace drc +{ + DRC_PUBLIC int _force_link_f (); + static int _force_link_target = _force_link_f (); +} + +#endif + diff --git a/src/drc/drc/drcResources.qrc b/src/drc/drc/drcResources.qrc new file mode 100644 index 000000000..d9ae49029 --- /dev/null +++ b/src/drc/drc/drcResources.qrc @@ -0,0 +1,6 @@ + + + built-in-macros/drc.lym + built-in-macros/drc_interpreters.lym + + diff --git a/src/common/*.cc b/src/drc/unit_tests/drcBasicTests.cc similarity index 89% rename from src/common/*.cc rename to src/drc/unit_tests/drcBasicTests.cc index 4b67bbf67..90a213cc1 100644 --- a/src/common/*.cc +++ b/src/drc/unit_tests/drcBasicTests.cc @@ -20,3 +20,11 @@ */ +#include "utHead.h" +#include "rdbForceLink.h" + +TEST(1) +{ + // @@@ TODO: add tests .. +} + diff --git a/src/drc/unit_tests/unit_tests.pro b/src/drc/unit_tests/unit_tests.pro new file mode 100644 index 000000000..a508e756f --- /dev/null +++ b/src/drc/unit_tests/unit_tests.pro @@ -0,0 +1,16 @@ + +DESTDIR_UT = $$OUT_PWD/../.. +DESTDIR = $$OUT_PWD/.. + +TARGET = drc_tests + +include($$PWD/../../klayout.pri) +include($$PWD/../../lib_ut.pri) + +SOURCES = \ + drcBasicTests.cc \ + +INCLUDEPATH += ../drc ../../rdb ../../db ../../tl ../../gsi ../../lym ../../ut +DEPENDPATH += ../drc ../../rdb ../../db ../../tl ../../gsi ../../lym ../../ut + +LIBS += -L$$DESTDIR_UT -lklayout_drc -lklayout_rdb -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_lym -lklayout_ut diff --git a/src/klayout.pri b/src/klayout.pri index 8a33efbf6..2a0864f24 100644 --- a/src/klayout.pri +++ b/src/klayout.pri @@ -1,17 +1,44 @@ -equals(HAVE_QTBINDINGS, "1") { - DEFINES += \ - HAVE_QTBINDINGS -} +ANT_INC = $$PWD/ant +BD_INC = $$PWD/buddies/src/bd +DB_INC = $$PWD/db +DRC_INC = $$PWD/drc/drc +EDT_INC = $$PWD/edt +EXT_INC = $$PWD/ext +GSI_INC = $$PWD/gsi +GSIQT_INC = $$PWD/gsiqt +IMG_INC = $$PWD/img +LIB_INC = $$PWD/lib +LAY_INC = $$PWD/lay +LAYBASIC_INC = $$PWD/laybasic +LYM_INC = $$PWD/lym +RDB_INC = $$PWD/rdb +TL_INC = $$PWD/tl +UT_INC = $$PWD/ut +VERSION_INC = $$PWD/version -equals(HAVE_64BIT_COORD, "1") { - DEFINES += \ - HAVE_64BIT_COORD +equals(HAVE_RUBY, "1") { + RBA_INC = $$PWD/rba +} else { + RBA_INC = $$PWD/rbastub } equals(HAVE_PYTHON, "1") { - DEFINES += \ - HAVE_PYTHON + PYA_INC = $$PWD/pya +} else { + PYA_INC = $$PWD/pyastub +} + +equals(HAVE_QTBINDINGS, "1") { + DEFINES += HAVE_QTBINDINGS +} + +equals(HAVE_64BIT_COORD, "1") { + DEFINES += HAVE_64BIT_COORD +} + +equals(HAVE_PYTHON, "1") { + DEFINES += HAVE_PYTHON } equals(HAVE_RUBY, "1") { diff --git a/src/klayout.pro b/src/klayout.pro index f16715bc8..21f15c9a6 100644 --- a/src/klayout.pro +++ b/src/klayout.pro @@ -21,6 +21,7 @@ SUBDIRS = \ ut \ plugins \ buddies \ + drc \ equals(HAVE_RUBY, "1") { SUBDIRS += rba @@ -45,6 +46,7 @@ laybasic.depends += db rdb ant.depends += laybasic img.depends += laybasic edt.depends += laybasic +drc.depends += db rdb lym lym.depends += tl gsi equals(HAVE_RUBY, "1") { diff --git a/src/klayout_main/klayout.cc b/src/klayout_main/klayout.cc index e5b3aabce..fcd5d2c8e 100644 --- a/src/klayout_main/klayout.cc +++ b/src/klayout_main/klayout.cc @@ -40,6 +40,7 @@ #include "libForceLink.h" #include "antForceLink.h" #include "imgForceLink.h" +#include "drcForceLink.h" #include #include diff --git a/src/lay/built_in_macros/index.txt b/src/lay/built_in_macros/index.txt deleted file mode 100644 index 38c9db1d6..000000000 --- a/src/lay/built_in_macros/index.txt +++ /dev/null @@ -1,6 +0,0 @@ -# Build-in macros list -pcell_declaration_helper.lym -qobject_helper.lym -drc.lym -drc_interpreters.lym - diff --git a/src/lay/built_in_pymacros/index.txt b/src/lay/built_in_pymacros/index.txt deleted file mode 100644 index ecb750f77..000000000 --- a/src/lay/built_in_pymacros/index.txt +++ /dev/null @@ -1,4 +0,0 @@ -# Build-in macros list -pcell_declaration_helper.lym -qt_helper.lym - diff --git a/src/lay/layBuildInMacros.qrc b/src/lay/layBuildInMacros.qrc index 9a8680e5a..653461cbd 100644 --- a/src/lay/layBuildInMacros.qrc +++ b/src/lay/layBuildInMacros.qrc @@ -1,16 +1,8 @@ - - built_in_macros/index.txt - built_in_macros/pcell_declaration_helper.lym built_in_macros/qobject_helper.lym - built_in_macros/drc.lym - built_in_macros/drc_interpreters.lym - - built_in_pymacros/index.txt - built_in_pymacros/pcell_declaration_helper.lym built_in_pymacros/qt_helper.lym diff --git a/src/lym/lymMacro.cc b/src/lym/lymMacro.cc index 48aded5a2..f83c5755e 100644 --- a/src/lym/lymMacro.cc +++ b/src/lym/lymMacro.cc @@ -1265,6 +1265,21 @@ void MacroCollection::rescan () } } +namespace { + + /** + * @brief A QResource variant that allows access to the children + */ + class ResourceWithChildren + : public QResource + { + public: + ResourceWithChildren (const QString &path) : QResource (path) { } + using QResource::children; + }; + +} + void MacroCollection::scan (const std::string &path) { if (tl::verbosity () >= 20) { @@ -1273,78 +1288,62 @@ void MacroCollection::scan (const std::string &path) if (! path.empty () && path[0] == ':') { - // look for an index file - QResource res (tl::to_qstring (path + "/index.txt")); - QByteArray data; - if (res.isCompressed ()) { - data = qUncompress ((const unsigned char *)res.data (), (int)res.size ()); - } else { - data = QByteArray ((const char *)res.data (), (int)res.size ()); - } + ResourceWithChildren res (tl::to_qstring (path)); + QStringList children = res.children (); - // Read index file - std::vector lines = tl::split (std::string (data.constData (), data.size ()), "\n"); - std::string description_prefix; - for (std::vector::const_iterator l = lines.begin (); l != lines.end (); ++l) { + for (QStringList::const_iterator c = children.begin (); c != children.end (); ++c) { - std::string ll = tl::trim (*l); - if (! ll.empty () && ll [0] != '#') { + std::string url = path + "/" + tl::to_string (*c); + QResource res (tl::to_qstring (url)); + if (res.size () > 0) { - std::string url = path + "/" + ll; - QResource res (tl::to_qstring (url)); - if (res.size () > 0) { + QByteArray data; + if (res.isCompressed ()) { + data = qUncompress ((const unsigned char *)res.data (), (int)res.size ()); + } else { + data = QByteArray ((const char *)res.data (), (int)res.size ()); + } - QByteArray data; - if (res.isCompressed ()) { - data = qUncompress ((const unsigned char *)res.data (), (int)res.size ()); - } else { - data = QByteArray ((const char *)res.data (), (int)res.size ()); - } + try { - try { + Macro::Format format = Macro::NoFormat; + Macro::Interpreter interpreter = Macro::None; + std::string dsl_name; + bool autorun = false; - Macro::Format format = Macro::NoFormat; - Macro::Interpreter interpreter = Macro::None; - std::string dsl_name; - bool autorun = false; + if (Macro::format_from_suffix (tl::to_string (*c), interpreter, dsl_name, autorun, format)) { - if (Macro::format_from_suffix (ll, interpreter, dsl_name, autorun, format)) { + std::string n = tl::to_string (QFileInfo (*c).baseName ()); - std::string n = tl::to_string (QFileInfo (tl::to_qstring (ll)).baseName ()); - - iterator mm = m_macros.find (n); - bool found = false; - while (mm != m_macros.end () && mm->first == n && ! found) { - if ((interpreter == Macro::None || mm->second->interpreter () == interpreter) && - (dsl_name.empty () || mm->second->dsl_interpreter () == dsl_name) && - mm->second->format () == format) { - found = true; - } - ++mm; + iterator mm = m_macros.find (n); + bool found = false; + while (mm != m_macros.end () && mm->first == n && ! found) { + if ((interpreter == Macro::None || mm->second->interpreter () == interpreter) && + (dsl_name.empty () || mm->second->dsl_interpreter () == dsl_name) && + mm->second->format () == format) { + found = true; } - if (! found) { - Macro *m = m_macros.insert (std::make_pair (n, new Macro ()))->second; - m->set_parent (this); - m->set_interpreter (interpreter); - m->set_autorun_default (autorun); - m->set_autorun (autorun); - m->set_dsl_interpreter (dsl_name); - m->set_format (format); - m->set_name (n); - m->load_from_string (std::string (data.constData (), data.size ()), url); - m->set_readonly (m_readonly); - m->reset_modified (); - m->set_is_file (); - } - + ++mm; + } + if (! found) { + Macro *m = m_macros.insert (std::make_pair (n, new Macro ()))->second; + m->set_parent (this); + m->set_interpreter (interpreter); + m->set_autorun_default (autorun); + m->set_autorun (autorun); + m->set_dsl_interpreter (dsl_name); + m->set_format (format); + m->set_name (n); + m->load_from_string (std::string (data.constData (), data.size ()), url); + m->set_readonly (m_readonly); + m->reset_modified (); + m->set_is_file (); } - } catch (tl::Exception &ex) { - tl::error << "Reading " << url << ": " << ex.msg (); } - } else { - tl::error << "Resource " << url << " not found"; + } catch (tl::Exception &ex) { + tl::error << "Reading " << url << ": " << ex.msg (); } } diff --git a/src/rdb/rdb.pro b/src/rdb/rdb.pro index b07690753..0e843ba65 100644 --- a/src/rdb/rdb.pro +++ b/src/rdb/rdb.pro @@ -14,6 +14,7 @@ RESOURCES = \ SOURCES = \ gsiDeclRdb.cc \ rdb.cc \ + rdbForceLink.cc \ rdbFile.cc \ rdbReader.cc \ rdbRVEReader.cc \ @@ -22,6 +23,7 @@ SOURCES = \ HEADERS = \ rdb.h \ + rdbForceLink.h \ rdbReader.h \ rdbTiledRdbOutputReceiver.h \ rdbUtils.h \ diff --git a/src/common/*.h b/src/rdb/rdbForceLink.cc similarity index 89% rename from src/common/*.h rename to src/rdb/rdbForceLink.cc index 4b67bbf67..501f94c56 100644 --- a/src/common/*.h +++ b/src/rdb/rdbForceLink.cc @@ -20,3 +20,14 @@ */ + +#include "rdbForceLink.h" + +namespace rdb +{ + int _force_link_f () + { + return 0; + } +} + diff --git a/src/rdb/rdbForceLink.h b/src/rdb/rdbForceLink.h new file mode 100644 index 000000000..18f284a31 --- /dev/null +++ b/src/rdb/rdbForceLink.h @@ -0,0 +1,40 @@ + +/* + + KLayout Layout Viewer + Copyright (C) 2006-2017 Matthias Koefferlein + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + + +#ifndef HDR_rdbForceLink +#define HDR_rdbForceLink + +#include "rdbCommon.h" + +/** + * @file Include this function to force linking of the rdb module + */ + +namespace rdb +{ + RDB_PUBLIC int _force_link_f (); + static int _force_link_target = _force_link_f (); +} + +#endif + diff --git a/src/with_all_libs.pri b/src/with_all_libs.pri index 410333a8b..c1d1940c7 100644 --- a/src/with_all_libs.pri +++ b/src/with_all_libs.pri @@ -1,8 +1,8 @@ -INCLUDEPATH += $$PYTHONINCLUDE $$PWD/tl $$PWD/gsi $$PWD/db $$PWD/rdb $$PWD/lym $$PWD/laybasic $$PWD/lay $$PWD/ant $$PWD/img $$PWD/edt $$PWD/ext $$PWD/lib $$PWD/common $$PWD/ut $$PWD/version -DEPENDPATH += $$PYTHONINCLUDE $$PWD/tl $$PWD/gsi $$PWD/db $$PWD/rdb $$PWD/lym $$PWD/laybasic $$PWD/lay $$PWD/ant $$PWD/img $$PWD/edt $$PWD/ext $$PWD/lib $$PWD/commo $$PWD/ut $$PWD/version +INCLUDEPATH += $$TL_INC $$GSI_INC $$DB_INC $$RDB_INC $$LYM_INC $$LAYBASIC_INC $$LAY_INC $$ANT_INC $$IMG_INC $$EDT_INC $$DRC_INC $$EXT_INC $$LIB_INC $$UT_INC $$RBA_INC $$PYA_INC $$VERSION_INC +DEPENDPATH += $$TL_INC $$GSI_INC $$DB_INC $$RDB_INC $$LYM_INC $$LAYBASIC_INC $$LAY_INC $$ANT_INC $$IMG_INC $$EDT_INC $$DRC_INC $$EXT_INC $$LIB_INC $$UT_INC $$RBA_INC $$PYA_INC $$VERSION_INC -LIBS += $$PYTHONLIBFILE $$RUBYLIBFILE -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_db -lklayout_rdb -lklayout_lym -lklayout_laybasic -lklayout_lay -lklayout_ant -lklayout_img -lklayout_edt -lklayout_ext -lklayout_lib -lklayout_ut +LIBS += $$PYTHONLIBFILE $$RUBYLIBFILE -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_db -lklayout_rdb -lklayout_lym -lklayout_laybasic -lklayout_lay -lklayout_ant -lklayout_img -lklayout_edt -lklayout_drc -lklayout_ext -lklayout_lib -lklayout_ut # Note: this accounts for UI-generated headers placed into the output folders in # shadow builds: @@ -16,21 +16,13 @@ equals(HAVE_QTBINDINGS, "1") { } equals(HAVE_RUBY, "1") { - INCLUDEPATH += $$PWD/rba - DEPENDPATH += $$PWD/rba LIBS += -lklayout_rba } else { - INCLUDEPATH += $$PWD/rbastub - DEPENDPATH += $$PWD/rbastub LIBS += -lklayout_rbastub } equals(HAVE_PYTHON, "1") { - INCLUDEPATH += $$PWD/pya - DEPENDPATH += $$PWD/pya LIBS += -lklayout_pya } else { - INCLUDEPATH += $$PWD/pyastub - DEPENDPATH += $$PWD/pyastub LIBS += -lklayout_pyastub }