diff --git a/src/ant/ant.pro b/src/ant/ant.pro
index 4442d858b..189a1b38b 100644
--- a/src/ant/ant.pro
+++ b/src/ant/ant.pro
@@ -1,42 +1,6 @@
-DESTDIR = $$OUT_PWD/..
-TARGET = klayout_ant
+TEMPLATE = subdirs
+SUBDIRS = ant unit_tests
-include($$PWD/../klayout.pri)
-include($$PWD/../lib.pri)
-
-DEFINES += MAKE_ANT_LIBRARY
-
-HEADERS = \
- antConfig.h \
- antConfigPage.h \
- antObject.h \
- antPlugin.h \
- antPropertiesPage.h \
- antService.h \
- antTemplate.h \
- antForceLink.h \
- antCommon.h
-
-FORMS = \
- RulerConfigPage.ui \
- RulerConfigPage2.ui \
- RulerConfigPage3.ui \
- RulerConfigPage4.ui \
- RulerPropertiesPage.ui \
-
-SOURCES = \
- antConfig.cc \
- antConfigPage.cc \
- antObject.cc \
- antPlugin.cc \
- antPropertiesPage.cc \
- antService.cc \
- antTemplate.cc \
- gsiDeclAnt.cc \
- antForceLink.cc
-
-INCLUDEPATH += ../tl ../gsi ../laybasic ../db
-DEPENDPATH += ../tl ../gsi ../laybasic ../db
-LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db
+unit_tests.depends += ant
diff --git a/src/ant/RulerConfigPage.ui b/src/ant/ant/RulerConfigPage.ui
similarity index 100%
rename from src/ant/RulerConfigPage.ui
rename to src/ant/ant/RulerConfigPage.ui
diff --git a/src/ant/RulerConfigPage2.ui b/src/ant/ant/RulerConfigPage2.ui
similarity index 100%
rename from src/ant/RulerConfigPage2.ui
rename to src/ant/ant/RulerConfigPage2.ui
diff --git a/src/ant/RulerConfigPage3.ui b/src/ant/ant/RulerConfigPage3.ui
similarity index 100%
rename from src/ant/RulerConfigPage3.ui
rename to src/ant/ant/RulerConfigPage3.ui
diff --git a/src/ant/RulerConfigPage4.ui b/src/ant/ant/RulerConfigPage4.ui
similarity index 100%
rename from src/ant/RulerConfigPage4.ui
rename to src/ant/ant/RulerConfigPage4.ui
diff --git a/src/ant/RulerPropertiesPage.ui b/src/ant/ant/RulerPropertiesPage.ui
similarity index 100%
rename from src/ant/RulerPropertiesPage.ui
rename to src/ant/ant/RulerPropertiesPage.ui
diff --git a/src/ant/ant/ant.pro b/src/ant/ant/ant.pro
new file mode 100644
index 000000000..033a687ac
--- /dev/null
+++ b/src/ant/ant/ant.pro
@@ -0,0 +1,41 @@
+
+DESTDIR = $$OUT_PWD/../..
+TARGET = klayout_ant
+
+include($$PWD/../../lib.pri)
+
+DEFINES += MAKE_ANT_LIBRARY
+
+HEADERS = \
+ antConfig.h \
+ antConfigPage.h \
+ antObject.h \
+ antPlugin.h \
+ antPropertiesPage.h \
+ antService.h \
+ antTemplate.h \
+ antForceLink.h \
+ antCommon.h
+
+FORMS = \
+ RulerConfigPage.ui \
+ RulerConfigPage2.ui \
+ RulerConfigPage3.ui \
+ RulerConfigPage4.ui \
+ RulerPropertiesPage.ui \
+
+SOURCES = \
+ antConfig.cc \
+ antConfigPage.cc \
+ antObject.cc \
+ antPlugin.cc \
+ antPropertiesPage.cc \
+ antService.cc \
+ antTemplate.cc \
+ gsiDeclAnt.cc \
+ antForceLink.cc
+
+INCLUDEPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$DB_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$DB_INC
+LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db
+
diff --git a/src/ant/antCommon.h b/src/ant/ant/antCommon.h
similarity index 100%
rename from src/ant/antCommon.h
rename to src/ant/ant/antCommon.h
diff --git a/src/ant/antConfig.cc b/src/ant/ant/antConfig.cc
similarity index 100%
rename from src/ant/antConfig.cc
rename to src/ant/ant/antConfig.cc
diff --git a/src/ant/antConfig.h b/src/ant/ant/antConfig.h
similarity index 100%
rename from src/ant/antConfig.h
rename to src/ant/ant/antConfig.h
diff --git a/src/ant/antConfigPage.cc b/src/ant/ant/antConfigPage.cc
similarity index 100%
rename from src/ant/antConfigPage.cc
rename to src/ant/ant/antConfigPage.cc
diff --git a/src/ant/antConfigPage.h b/src/ant/ant/antConfigPage.h
similarity index 100%
rename from src/ant/antConfigPage.h
rename to src/ant/ant/antConfigPage.h
diff --git a/src/ant/antForceLink.cc b/src/ant/ant/antForceLink.cc
similarity index 100%
rename from src/ant/antForceLink.cc
rename to src/ant/ant/antForceLink.cc
diff --git a/src/ant/antForceLink.h b/src/ant/ant/antForceLink.h
similarity index 100%
rename from src/ant/antForceLink.h
rename to src/ant/ant/antForceLink.h
diff --git a/src/ant/antObject.cc b/src/ant/ant/antObject.cc
similarity index 100%
rename from src/ant/antObject.cc
rename to src/ant/ant/antObject.cc
diff --git a/src/ant/antObject.h b/src/ant/ant/antObject.h
similarity index 100%
rename from src/ant/antObject.h
rename to src/ant/ant/antObject.h
diff --git a/src/ant/antPlugin.cc b/src/ant/ant/antPlugin.cc
similarity index 100%
rename from src/ant/antPlugin.cc
rename to src/ant/ant/antPlugin.cc
diff --git a/src/ant/antPlugin.h b/src/ant/ant/antPlugin.h
similarity index 100%
rename from src/ant/antPlugin.h
rename to src/ant/ant/antPlugin.h
diff --git a/src/ant/antPropertiesPage.cc b/src/ant/ant/antPropertiesPage.cc
similarity index 100%
rename from src/ant/antPropertiesPage.cc
rename to src/ant/ant/antPropertiesPage.cc
diff --git a/src/ant/antPropertiesPage.h b/src/ant/ant/antPropertiesPage.h
similarity index 100%
rename from src/ant/antPropertiesPage.h
rename to src/ant/ant/antPropertiesPage.h
diff --git a/src/ant/antService.cc b/src/ant/ant/antService.cc
similarity index 100%
rename from src/ant/antService.cc
rename to src/ant/ant/antService.cc
diff --git a/src/ant/antService.h b/src/ant/ant/antService.h
similarity index 100%
rename from src/ant/antService.h
rename to src/ant/ant/antService.h
diff --git a/src/ant/antTemplate.cc b/src/ant/ant/antTemplate.cc
similarity index 100%
rename from src/ant/antTemplate.cc
rename to src/ant/ant/antTemplate.cc
diff --git a/src/ant/antTemplate.h b/src/ant/ant/antTemplate.h
similarity index 100%
rename from src/ant/antTemplate.h
rename to src/ant/ant/antTemplate.h
diff --git a/src/ant/gsiDeclAnt.cc b/src/ant/ant/gsiDeclAnt.cc
similarity index 100%
rename from src/ant/gsiDeclAnt.cc
rename to src/ant/ant/gsiDeclAnt.cc
diff --git a/src/ant/unit_tests/antBasicTests.cc b/src/ant/unit_tests/antBasicTests.cc
new file mode 100644
index 000000000..f21540f05
--- /dev/null
+++ b/src/ant/unit_tests/antBasicTests.cc
@@ -0,0 +1,50 @@
+
+/*
+
+ 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 "utHead.h"
+#include "antObject.h"
+#include "antTemplate.h"
+
+TEST(1)
+{
+ ant::Template tmp = ant::Template ("title", "fmt_x", "fmt_y", "fmt",
+ ant::Object::STY_arrow_both,
+ ant::Object::OL_diag_xy,
+ true,
+ lay::AC_Ortho,
+ "cat");
+
+ ant::Object a = ant::Object (db::DPoint (1.0, 2.0), db::DPoint (3.0, 4.0), 17, tmp);
+
+ EXPECT_EQ (a.fmt (), "fmt");
+ EXPECT_EQ (a.fmt_x (), "fmt_x");
+ EXPECT_EQ (a.fmt_y (), "fmt_y");
+ EXPECT_EQ (a.box ().to_string (), "(1,2;3,4)");
+ EXPECT_EQ (a.p1 ().to_string (), "1,2");
+ EXPECT_EQ (a.p2 ().to_string (), "3,4");
+ EXPECT_EQ (a.angle_constraint (), lay::AC_Ortho);
+ EXPECT_EQ (a.id (), 17);
+ EXPECT_EQ (a.snap (), true);
+ EXPECT_EQ (a.category (), "cat");
+}
+
diff --git a/src/ant/unit_tests/unit_tests.pro b/src/ant/unit_tests/unit_tests.pro
new file mode 100644
index 000000000..5e12e7a9c
--- /dev/null
+++ b/src/ant/unit_tests/unit_tests.pro
@@ -0,0 +1,16 @@
+
+DESTDIR_UT = $$OUT_PWD/../..
+DESTDIR = $$OUT_PWD/..
+
+TARGET = ant_tests
+
+include($$PWD/../../lib_ut.pri)
+
+SOURCES = \
+ antBasicTests.cc \
+
+INCLUDEPATH += $$ANT_INC $$TL_INC $$LAYBASIC_INC $$DB_INC $$GSI_INC $$UT_INC
+DEPENDPATH += $$ANT_INC $$TL_INC $$LAYBASIC_INC $$DB_INC $$GSI_INC $$UT_INC
+
+LIBS += -L$$DESTDIR_UT -lklayout_ant -lklayout_laybasic -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_ut
+
diff --git a/src/buddies/src/bd/bd.pro b/src/buddies/src/bd/bd.pro
index 80509f221..11a85c0b2 100644
--- a/src/buddies/src/bd/bd.pro
+++ b/src/buddies/src/bd/bd.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/../../..
TARGET = klayout_bd
-include($$PWD/../../../klayout.pri)
include($$PWD/../../../lib.pri)
DEFINES += MAKE_BD_LIBRARY
@@ -31,7 +30,7 @@ HEADERS = \
RESOURCES = \
-INCLUDEPATH += ../../../tl ../../../db ../../../gsi ../../../version
-DEPENDPATH += ../../../tl ../../../db ../../../gsi ../../../version
+INCLUDEPATH += $$TL_INC $$GSI_INC $$VERSION_INC $$DB_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$VERSION_INC $$DB_INC
LIBS += -L$$DESTDIR -lklayout_tl -lklayout_db -lklayout_gsi
diff --git a/src/buddies/src/buddy_app.pri b/src/buddies/src/buddy_app.pri
index a8bec95c2..56970dd9f 100644
--- a/src/buddies/src/buddy_app.pri
+++ b/src/buddies/src/buddy_app.pri
@@ -11,8 +11,8 @@ include($$PWD/../../app.pri)
# place - it's not part of the bd sources.
SOURCES = $$PWD/bd/main.cc
-INCLUDEPATH += ../bd
-DEPENDPATH += ../bd
+INCLUDEPATH += $$BD_INC
+DEPENDPATH += $$BD_INC
LIBS += -L$$DESTDIR -lklayout_bd -lklayout_db -lklayout_tl -lklayout_gsi
DEFINES += BD_TARGET=$$TARGET
diff --git a/src/buddies/unit_tests/unit_tests.pro b/src/buddies/unit_tests/unit_tests.pro
index 85ba702c3..b833c2efb 100644
--- a/src/buddies/unit_tests/unit_tests.pro
+++ b/src/buddies/unit_tests/unit_tests.pro
@@ -16,7 +16,7 @@ SOURCES = \
bdStrmxorTests.cc \
-INCLUDEPATH += ../src/bd ../../db ../../tl ../../gsi ../../laybasic ../../lay ../../ut
-DEPENDPATH += ../src/bd ../../db ../../tl ../../gsi ../../laybasic ../../lay ../../ut
+INCLUDEPATH += $$BD_INC $$DB_INC $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC $$UT_INC
+DEPENDPATH += $$BD_INC $$DB_INC $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC $$UT_INC
LIBS += -L$$DESTDIR_UT -lklayout_bd -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_lay -lklayout_ut
diff --git a/src/db/db.pro b/src/db/db.pro
index e61f0db2f..b100268b9 100644
--- a/src/db/db.pro
+++ b/src/db/db.pro
@@ -1,238 +1,6 @@
-DESTDIR = $$OUT_PWD/..
-TARGET = klayout_db
+TEMPLATE = subdirs
+SUBDIRS = db unit_tests
-include($$PWD/../klayout.pri)
-include($$PWD/../lib.pri)
-
-DEFINES += MAKE_DB_LIBRARY
-
-SOURCES = \
- dbArray.cc \
- dbBox.cc \
- dbBoxConvert.cc \
- dbBoxScanner.cc \
- dbCommonReader.cc \
- dbCell.cc \
- dbCellGraphUtils.cc \
- dbCellHullGenerator.cc \
- dbCellInst.cc \
- dbCellMapping.cc \
- dbCIF.cc \
- dbCIFReader.cc \
- dbCIFWriter.cc \
- dbClipboard.cc \
- dbClipboardData.cc \
- dbClip.cc \
- dbDXF.cc \
- dbDXFReader.cc \
- dbDXFWriter.cc \
- dbEdge.cc \
- dbEdgePair.cc \
- dbEdgePairRelations.cc \
- dbEdgePairs.cc \
- dbEdgeProcessor.cc \
- dbEdges.cc \
- dbFillTool.cc \
- dbForceLinkStreams.cc \
- dbFuzzyCellMapping.cc \
- dbGDS2.cc \
- dbGDS2ReaderBase.cc \
- dbGDS2Reader.cc \
- dbGDS2WriterBase.cc \
- dbGDS2Writer.cc \
- dbGlyphs.cc \
- dbHershey.cc \
- dbInstances.cc \
- dbInstElement.cc \
- dbLayerMapping.cc \
- dbLayerProperties.cc \
- dbLayout.cc \
- dbLayoutContextHandler.cc \
- dbLayoutDiff.cc \
- dbLayoutQuery.cc \
- dbLayoutStateModel.cc \
- dbLayoutUtils.cc \
- dbLibrary.cc \
- dbLibraryManager.cc \
- dbLibraryProxy.cc \
- dbLoadLayoutOptions.cc \
- dbManager.cc \
- dbMatrix.cc \
- dbMemStatistics.cc \
- dbOASIS.cc \
- dbOASISReader.cc \
- dbOASISWriter.cc \
- dbObject.cc \
- dbPath.cc \
- dbPCellDeclaration.cc \
- dbPCellHeader.cc \
- dbPCellVariant.cc \
- dbPoint.cc \
- dbPolygon.cc \
- dbPolygonTools.cc \
- dbPolygonGenerators.cc \
- dbPropertiesRepository.cc \
- dbReader.cc \
- dbRecursiveShapeIterator.cc \
- dbRegion.cc \
- dbSaveLayoutOptions.cc \
- dbShape.cc \
- dbShapes2.cc \
- dbShapes3.cc \
- dbShapes.cc \
- dbShapeIterator.cc \
- dbShapeProcessor.cc \
- dbStatic.cc \
- dbStream.cc \
- dbStreamLayers.cc \
- dbText.cc \
- dbTextWriter.cc \
- dbTilingProcessor.cc \
- dbTrans.cc \
- dbUserObject.cc \
- dbVector.cc \
- dbWriter.cc \
- dbWriterTools.cc \
- contrib/dbGDS2Converter.cc \
- contrib/dbGDS2Text.cc \
- contrib/dbGDS2TextReader.cc \
- contrib/dbGDS2TextWriter.cc \
- gsiDeclDbBox.cc \
- gsiDeclDbCell.cc \
- gsiDeclDbCellMapping.cc \
- gsiDeclDbEdge.cc \
- gsiDeclDbEdgePair.cc \
- gsiDeclDbEdgePairs.cc \
- gsiDeclDbEdgeProcessor.cc \
- gsiDeclDbEdges.cc \
- gsiDeclDbInstElement.cc \
- gsiDeclDbLayerMapping.cc \
- gsiDeclDbLayout.cc \
- gsiDeclDbLayoutUtils.cc \
- gsiDeclDbLayoutQuery.cc \
- gsiDeclDbLibrary.cc \
- gsiDeclDbManager.cc \
- gsiDeclDbMatrix.cc \
- gsiDeclDbPath.cc \
- gsiDeclDbPoint.cc \
- gsiDeclDbPolygon.cc \
- gsiDeclDbReader.cc \
- gsiDeclDbRecursiveShapeIterator.cc \
- gsiDeclDbRegion.cc \
- gsiDeclDbShape.cc \
- gsiDeclDbShapeProcessor.cc \
- gsiDeclDbShapes.cc \
- gsiDeclDbText.cc \
- gsiDeclDbTilingProcessor.cc \
- gsiDeclDbTrans.cc \
- gsiDeclDbVector.cc \
- gsiDeclDbLayoutDiff.cc \
- gsiDeclDbGlyphs.cc \
-
-HEADERS = \
- dbArray.h \
- dbBoxConvert.h \
- dbBox.h \
- dbBoxScanner.h \
- dbBoxTree.h \
- dbCellGraphUtils.h \
- dbCell.h \
- dbCellHullGenerator.h \
- dbCellInst.h \
- dbCellMapping.h \
- dbCIF.h \
- dbCIFReader.h \
- dbCIFWriter.h \
- dbClipboardData.h \
- dbClipboard.h \
- dbClip.h \
- dbDXF.h \
- dbDXFReader.h \
- dbDXFWriter.h \
- dbEdge.h \
- dbEdgePair.h \
- dbEdgePairRelations.h \
- dbEdgePairs.h \
- dbEdgeProcessor.h \
- dbEdges.h \
- dbEdgesToContours.h \
- dbFillTool.h \
- dbFuzzyCellMapping.h \
- dbGDS2.h \
- dbGDS2ReaderBase.h \
- dbGDS2Reader.h \
- dbGDS2WriterBase.h \
- dbGDS2Writer.h \
- dbHash.h \
- dbHersheyFont.h \
- dbHershey.h \
- dbInstances.h \
- dbInstElement.h \
- dbLayer.h \
- dbLayerMapping.h \
- dbLayerProperties.h \
- dbLayoutDiff.h \
- dbLayout.h \
- dbLayoutQuery.h \
- dbLayoutStateModel.h \
- dbLayoutUtils.h \
- dbLibrary.h \
- dbLibraryManager.h \
- dbLibraryProxy.h \
- dbLoadLayoutOptions.h \
- dbManager.h \
- dbMatrix.h \
- dbMemStatistics.h \
- dbMetaInfo.h \
- dbOASIS.h \
- dbOASISReader.h \
- dbOASISWriter.h \
- dbObject.h \
- dbObjectTag.h \
- dbObjectWithProperties.h \
- dbPath.h \
- dbPCellDeclaration.h \
- dbPCellHeader.h \
- dbPCellVariant.h \
- dbPoint.h \
- dbPolygon.h \
- dbPolygonTools.h \
- dbPolygonGenerators.h \
- dbPropertiesRepository.h \
- dbReader.h \
- dbRecursiveShapeIterator.h \
- dbRegion.h \
- dbSaveLayoutOptions.h \
- dbShape.h \
- dbShapeRepository.h \
- dbShapes2.h \
- dbShapeProcessor.h \
- dbShapes.h \
- dbStatic.h \
- dbStream.h \
- dbStreamLayers.h \
- dbText.h \
- dbTextWriter.h \
- dbTilingProcessor.h \
- dbTrans.h \
- dbTypes.h \
- dbUserObject.h \
- dbVector.h \
- dbWriter.h \
- dbWriterTools.h \
- contrib/dbGDS2Converter.h \
- contrib/dbGDS2Text.h \
- contrib/dbGDS2TextReader.h \
- contrib/dbGDS2TextWriter.h \
- dbCommonReader.h \
- dbGlyphs.h \
- dbCommon.h
-
-RESOURCES = \
- dbResources.qrc
-
-INCLUDEPATH += $$TL_INC $$GSI_INC
-DEPENDPATH += $$TL_INC $$GSI_INC
-LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi
+unit_tests.depends += db
diff --git a/src/db/built-in-macros/pcell_declaration_helper.lym b/src/db/db/built-in-macros/pcell_declaration_helper.lym
similarity index 100%
rename from src/db/built-in-macros/pcell_declaration_helper.lym
rename to src/db/db/built-in-macros/pcell_declaration_helper.lym
diff --git a/src/db/built-in-pymacros/pcell_declaration_helper.lym b/src/db/db/built-in-pymacros/pcell_declaration_helper.lym
similarity index 100%
rename from src/db/built-in-pymacros/pcell_declaration_helper.lym
rename to src/db/db/built-in-pymacros/pcell_declaration_helper.lym
diff --git a/src/db/contrib/dbGDS2Converter.cc b/src/db/db/contrib/dbGDS2Converter.cc
similarity index 100%
rename from src/db/contrib/dbGDS2Converter.cc
rename to src/db/db/contrib/dbGDS2Converter.cc
diff --git a/src/db/contrib/dbGDS2Converter.h b/src/db/db/contrib/dbGDS2Converter.h
similarity index 100%
rename from src/db/contrib/dbGDS2Converter.h
rename to src/db/db/contrib/dbGDS2Converter.h
diff --git a/src/db/contrib/dbGDS2Text.cc b/src/db/db/contrib/dbGDS2Text.cc
similarity index 100%
rename from src/db/contrib/dbGDS2Text.cc
rename to src/db/db/contrib/dbGDS2Text.cc
diff --git a/src/db/contrib/dbGDS2Text.h b/src/db/db/contrib/dbGDS2Text.h
similarity index 100%
rename from src/db/contrib/dbGDS2Text.h
rename to src/db/db/contrib/dbGDS2Text.h
diff --git a/src/db/contrib/dbGDS2TextReader.cc b/src/db/db/contrib/dbGDS2TextReader.cc
similarity index 100%
rename from src/db/contrib/dbGDS2TextReader.cc
rename to src/db/db/contrib/dbGDS2TextReader.cc
diff --git a/src/db/contrib/dbGDS2TextReader.h b/src/db/db/contrib/dbGDS2TextReader.h
similarity index 100%
rename from src/db/contrib/dbGDS2TextReader.h
rename to src/db/db/contrib/dbGDS2TextReader.h
diff --git a/src/db/contrib/dbGDS2TextWriter.cc b/src/db/db/contrib/dbGDS2TextWriter.cc
similarity index 100%
rename from src/db/contrib/dbGDS2TextWriter.cc
rename to src/db/db/contrib/dbGDS2TextWriter.cc
diff --git a/src/db/contrib/dbGDS2TextWriter.h b/src/db/db/contrib/dbGDS2TextWriter.h
similarity index 100%
rename from src/db/contrib/dbGDS2TextWriter.h
rename to src/db/db/contrib/dbGDS2TextWriter.h
diff --git a/src/db/db/db.pro b/src/db/db/db.pro
new file mode 100644
index 000000000..3c860a336
--- /dev/null
+++ b/src/db/db/db.pro
@@ -0,0 +1,237 @@
+
+DESTDIR = $$OUT_PWD/../..
+TARGET = klayout_db
+
+include($$PWD/../../lib.pri)
+
+DEFINES += MAKE_DB_LIBRARY
+
+SOURCES = \
+ dbArray.cc \
+ dbBox.cc \
+ dbBoxConvert.cc \
+ dbBoxScanner.cc \
+ dbCommonReader.cc \
+ dbCell.cc \
+ dbCellGraphUtils.cc \
+ dbCellHullGenerator.cc \
+ dbCellInst.cc \
+ dbCellMapping.cc \
+ dbCIF.cc \
+ dbCIFReader.cc \
+ dbCIFWriter.cc \
+ dbClipboard.cc \
+ dbClipboardData.cc \
+ dbClip.cc \
+ dbDXF.cc \
+ dbDXFReader.cc \
+ dbDXFWriter.cc \
+ dbEdge.cc \
+ dbEdgePair.cc \
+ dbEdgePairRelations.cc \
+ dbEdgePairs.cc \
+ dbEdgeProcessor.cc \
+ dbEdges.cc \
+ dbFillTool.cc \
+ dbForceLinkStreams.cc \
+ dbFuzzyCellMapping.cc \
+ dbGDS2.cc \
+ dbGDS2ReaderBase.cc \
+ dbGDS2Reader.cc \
+ dbGDS2WriterBase.cc \
+ dbGDS2Writer.cc \
+ dbGlyphs.cc \
+ dbHershey.cc \
+ dbInstances.cc \
+ dbInstElement.cc \
+ dbLayerMapping.cc \
+ dbLayerProperties.cc \
+ dbLayout.cc \
+ dbLayoutContextHandler.cc \
+ dbLayoutDiff.cc \
+ dbLayoutQuery.cc \
+ dbLayoutStateModel.cc \
+ dbLayoutUtils.cc \
+ dbLibrary.cc \
+ dbLibraryManager.cc \
+ dbLibraryProxy.cc \
+ dbLoadLayoutOptions.cc \
+ dbManager.cc \
+ dbMatrix.cc \
+ dbMemStatistics.cc \
+ dbOASIS.cc \
+ dbOASISReader.cc \
+ dbOASISWriter.cc \
+ dbObject.cc \
+ dbPath.cc \
+ dbPCellDeclaration.cc \
+ dbPCellHeader.cc \
+ dbPCellVariant.cc \
+ dbPoint.cc \
+ dbPolygon.cc \
+ dbPolygonTools.cc \
+ dbPolygonGenerators.cc \
+ dbPropertiesRepository.cc \
+ dbReader.cc \
+ dbRecursiveShapeIterator.cc \
+ dbRegion.cc \
+ dbSaveLayoutOptions.cc \
+ dbShape.cc \
+ dbShapes2.cc \
+ dbShapes3.cc \
+ dbShapes.cc \
+ dbShapeIterator.cc \
+ dbShapeProcessor.cc \
+ dbStatic.cc \
+ dbStream.cc \
+ dbStreamLayers.cc \
+ dbText.cc \
+ dbTextWriter.cc \
+ dbTilingProcessor.cc \
+ dbTrans.cc \
+ dbUserObject.cc \
+ dbVector.cc \
+ dbWriter.cc \
+ dbWriterTools.cc \
+ contrib/dbGDS2Converter.cc \
+ contrib/dbGDS2Text.cc \
+ contrib/dbGDS2TextReader.cc \
+ contrib/dbGDS2TextWriter.cc \
+ gsiDeclDbBox.cc \
+ gsiDeclDbCell.cc \
+ gsiDeclDbCellMapping.cc \
+ gsiDeclDbEdge.cc \
+ gsiDeclDbEdgePair.cc \
+ gsiDeclDbEdgePairs.cc \
+ gsiDeclDbEdgeProcessor.cc \
+ gsiDeclDbEdges.cc \
+ gsiDeclDbInstElement.cc \
+ gsiDeclDbLayerMapping.cc \
+ gsiDeclDbLayout.cc \
+ gsiDeclDbLayoutUtils.cc \
+ gsiDeclDbLayoutQuery.cc \
+ gsiDeclDbLibrary.cc \
+ gsiDeclDbManager.cc \
+ gsiDeclDbMatrix.cc \
+ gsiDeclDbPath.cc \
+ gsiDeclDbPoint.cc \
+ gsiDeclDbPolygon.cc \
+ gsiDeclDbReader.cc \
+ gsiDeclDbRecursiveShapeIterator.cc \
+ gsiDeclDbRegion.cc \
+ gsiDeclDbShape.cc \
+ gsiDeclDbShapeProcessor.cc \
+ gsiDeclDbShapes.cc \
+ gsiDeclDbText.cc \
+ gsiDeclDbTilingProcessor.cc \
+ gsiDeclDbTrans.cc \
+ gsiDeclDbVector.cc \
+ gsiDeclDbLayoutDiff.cc \
+ gsiDeclDbGlyphs.cc \
+
+HEADERS = \
+ dbArray.h \
+ dbBoxConvert.h \
+ dbBox.h \
+ dbBoxScanner.h \
+ dbBoxTree.h \
+ dbCellGraphUtils.h \
+ dbCell.h \
+ dbCellHullGenerator.h \
+ dbCellInst.h \
+ dbCellMapping.h \
+ dbCIF.h \
+ dbCIFReader.h \
+ dbCIFWriter.h \
+ dbClipboardData.h \
+ dbClipboard.h \
+ dbClip.h \
+ dbDXF.h \
+ dbDXFReader.h \
+ dbDXFWriter.h \
+ dbEdge.h \
+ dbEdgePair.h \
+ dbEdgePairRelations.h \
+ dbEdgePairs.h \
+ dbEdgeProcessor.h \
+ dbEdges.h \
+ dbEdgesToContours.h \
+ dbFillTool.h \
+ dbFuzzyCellMapping.h \
+ dbGDS2.h \
+ dbGDS2ReaderBase.h \
+ dbGDS2Reader.h \
+ dbGDS2WriterBase.h \
+ dbGDS2Writer.h \
+ dbHash.h \
+ dbHersheyFont.h \
+ dbHershey.h \
+ dbInstances.h \
+ dbInstElement.h \
+ dbLayer.h \
+ dbLayerMapping.h \
+ dbLayerProperties.h \
+ dbLayoutDiff.h \
+ dbLayout.h \
+ dbLayoutQuery.h \
+ dbLayoutStateModel.h \
+ dbLayoutUtils.h \
+ dbLibrary.h \
+ dbLibraryManager.h \
+ dbLibraryProxy.h \
+ dbLoadLayoutOptions.h \
+ dbManager.h \
+ dbMatrix.h \
+ dbMemStatistics.h \
+ dbMetaInfo.h \
+ dbOASIS.h \
+ dbOASISReader.h \
+ dbOASISWriter.h \
+ dbObject.h \
+ dbObjectTag.h \
+ dbObjectWithProperties.h \
+ dbPath.h \
+ dbPCellDeclaration.h \
+ dbPCellHeader.h \
+ dbPCellVariant.h \
+ dbPoint.h \
+ dbPolygon.h \
+ dbPolygonTools.h \
+ dbPolygonGenerators.h \
+ dbPropertiesRepository.h \
+ dbReader.h \
+ dbRecursiveShapeIterator.h \
+ dbRegion.h \
+ dbSaveLayoutOptions.h \
+ dbShape.h \
+ dbShapeRepository.h \
+ dbShapes2.h \
+ dbShapeProcessor.h \
+ dbShapes.h \
+ dbStatic.h \
+ dbStream.h \
+ dbStreamLayers.h \
+ dbText.h \
+ dbTextWriter.h \
+ dbTilingProcessor.h \
+ dbTrans.h \
+ dbTypes.h \
+ dbUserObject.h \
+ dbVector.h \
+ dbWriter.h \
+ dbWriterTools.h \
+ contrib/dbGDS2Converter.h \
+ contrib/dbGDS2Text.h \
+ contrib/dbGDS2TextReader.h \
+ contrib/dbGDS2TextWriter.h \
+ dbCommonReader.h \
+ dbGlyphs.h \
+ dbCommon.h
+
+RESOURCES = \
+ dbResources.qrc
+
+INCLUDEPATH += $$TL_INC $$GSI_INC
+DEPENDPATH += $$TL_INC $$GSI_INC
+LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi
+
diff --git a/src/db/dbArray.cc b/src/db/db/dbArray.cc
similarity index 100%
rename from src/db/dbArray.cc
rename to src/db/db/dbArray.cc
diff --git a/src/db/dbArray.h b/src/db/db/dbArray.h
similarity index 100%
rename from src/db/dbArray.h
rename to src/db/db/dbArray.h
diff --git a/src/db/dbBox.cc b/src/db/db/dbBox.cc
similarity index 100%
rename from src/db/dbBox.cc
rename to src/db/db/dbBox.cc
diff --git a/src/db/dbBox.h b/src/db/db/dbBox.h
similarity index 100%
rename from src/db/dbBox.h
rename to src/db/db/dbBox.h
diff --git a/src/db/dbBoxConvert.cc b/src/db/db/dbBoxConvert.cc
similarity index 100%
rename from src/db/dbBoxConvert.cc
rename to src/db/db/dbBoxConvert.cc
diff --git a/src/db/dbBoxConvert.h b/src/db/db/dbBoxConvert.h
similarity index 100%
rename from src/db/dbBoxConvert.h
rename to src/db/db/dbBoxConvert.h
diff --git a/src/db/dbBoxScanner.cc b/src/db/db/dbBoxScanner.cc
similarity index 100%
rename from src/db/dbBoxScanner.cc
rename to src/db/db/dbBoxScanner.cc
diff --git a/src/db/dbBoxScanner.h b/src/db/db/dbBoxScanner.h
similarity index 100%
rename from src/db/dbBoxScanner.h
rename to src/db/db/dbBoxScanner.h
diff --git a/src/db/dbBoxTree.h b/src/db/db/dbBoxTree.h
similarity index 100%
rename from src/db/dbBoxTree.h
rename to src/db/db/dbBoxTree.h
diff --git a/src/db/dbCIF.cc b/src/db/db/dbCIF.cc
similarity index 100%
rename from src/db/dbCIF.cc
rename to src/db/db/dbCIF.cc
diff --git a/src/db/dbCIF.h b/src/db/db/dbCIF.h
similarity index 100%
rename from src/db/dbCIF.h
rename to src/db/db/dbCIF.h
diff --git a/src/db/dbCIFReader.cc b/src/db/db/dbCIFReader.cc
similarity index 100%
rename from src/db/dbCIFReader.cc
rename to src/db/db/dbCIFReader.cc
diff --git a/src/db/dbCIFReader.h b/src/db/db/dbCIFReader.h
similarity index 100%
rename from src/db/dbCIFReader.h
rename to src/db/db/dbCIFReader.h
diff --git a/src/db/dbCIFWriter.cc b/src/db/db/dbCIFWriter.cc
similarity index 100%
rename from src/db/dbCIFWriter.cc
rename to src/db/db/dbCIFWriter.cc
diff --git a/src/db/dbCIFWriter.h b/src/db/db/dbCIFWriter.h
similarity index 100%
rename from src/db/dbCIFWriter.h
rename to src/db/db/dbCIFWriter.h
diff --git a/src/db/dbCell.cc b/src/db/db/dbCell.cc
similarity index 100%
rename from src/db/dbCell.cc
rename to src/db/db/dbCell.cc
diff --git a/src/db/dbCell.h b/src/db/db/dbCell.h
similarity index 100%
rename from src/db/dbCell.h
rename to src/db/db/dbCell.h
diff --git a/src/db/dbCellGraphUtils.cc b/src/db/db/dbCellGraphUtils.cc
similarity index 100%
rename from src/db/dbCellGraphUtils.cc
rename to src/db/db/dbCellGraphUtils.cc
diff --git a/src/db/dbCellGraphUtils.h b/src/db/db/dbCellGraphUtils.h
similarity index 100%
rename from src/db/dbCellGraphUtils.h
rename to src/db/db/dbCellGraphUtils.h
diff --git a/src/db/dbCellHullGenerator.cc b/src/db/db/dbCellHullGenerator.cc
similarity index 100%
rename from src/db/dbCellHullGenerator.cc
rename to src/db/db/dbCellHullGenerator.cc
diff --git a/src/db/dbCellHullGenerator.h b/src/db/db/dbCellHullGenerator.h
similarity index 100%
rename from src/db/dbCellHullGenerator.h
rename to src/db/db/dbCellHullGenerator.h
diff --git a/src/db/dbCellInst.cc b/src/db/db/dbCellInst.cc
similarity index 100%
rename from src/db/dbCellInst.cc
rename to src/db/db/dbCellInst.cc
diff --git a/src/db/dbCellInst.h b/src/db/db/dbCellInst.h
similarity index 100%
rename from src/db/dbCellInst.h
rename to src/db/db/dbCellInst.h
diff --git a/src/db/dbCellMapping.cc b/src/db/db/dbCellMapping.cc
similarity index 100%
rename from src/db/dbCellMapping.cc
rename to src/db/db/dbCellMapping.cc
diff --git a/src/db/dbCellMapping.h b/src/db/db/dbCellMapping.h
similarity index 100%
rename from src/db/dbCellMapping.h
rename to src/db/db/dbCellMapping.h
diff --git a/src/db/dbClip.cc b/src/db/db/dbClip.cc
similarity index 100%
rename from src/db/dbClip.cc
rename to src/db/db/dbClip.cc
diff --git a/src/db/dbClip.h b/src/db/db/dbClip.h
similarity index 100%
rename from src/db/dbClip.h
rename to src/db/db/dbClip.h
diff --git a/src/db/dbClipboard.cc b/src/db/db/dbClipboard.cc
similarity index 100%
rename from src/db/dbClipboard.cc
rename to src/db/db/dbClipboard.cc
diff --git a/src/db/dbClipboard.h b/src/db/db/dbClipboard.h
similarity index 100%
rename from src/db/dbClipboard.h
rename to src/db/db/dbClipboard.h
diff --git a/src/db/dbClipboardData.cc b/src/db/db/dbClipboardData.cc
similarity index 100%
rename from src/db/dbClipboardData.cc
rename to src/db/db/dbClipboardData.cc
diff --git a/src/db/dbClipboardData.h b/src/db/db/dbClipboardData.h
similarity index 100%
rename from src/db/dbClipboardData.h
rename to src/db/db/dbClipboardData.h
diff --git a/src/db/dbCommon.h b/src/db/db/dbCommon.h
similarity index 100%
rename from src/db/dbCommon.h
rename to src/db/db/dbCommon.h
diff --git a/src/db/dbCommonReader.cc b/src/db/db/dbCommonReader.cc
similarity index 100%
rename from src/db/dbCommonReader.cc
rename to src/db/db/dbCommonReader.cc
diff --git a/src/db/dbCommonReader.h b/src/db/db/dbCommonReader.h
similarity index 100%
rename from src/db/dbCommonReader.h
rename to src/db/db/dbCommonReader.h
diff --git a/src/db/dbDXF.cc b/src/db/db/dbDXF.cc
similarity index 100%
rename from src/db/dbDXF.cc
rename to src/db/db/dbDXF.cc
diff --git a/src/db/dbDXF.h b/src/db/db/dbDXF.h
similarity index 100%
rename from src/db/dbDXF.h
rename to src/db/db/dbDXF.h
diff --git a/src/db/dbDXFReader.cc b/src/db/db/dbDXFReader.cc
similarity index 100%
rename from src/db/dbDXFReader.cc
rename to src/db/db/dbDXFReader.cc
diff --git a/src/db/dbDXFReader.h b/src/db/db/dbDXFReader.h
similarity index 100%
rename from src/db/dbDXFReader.h
rename to src/db/db/dbDXFReader.h
diff --git a/src/db/dbDXFWriter.cc b/src/db/db/dbDXFWriter.cc
similarity index 100%
rename from src/db/dbDXFWriter.cc
rename to src/db/db/dbDXFWriter.cc
diff --git a/src/db/dbDXFWriter.h b/src/db/db/dbDXFWriter.h
similarity index 100%
rename from src/db/dbDXFWriter.h
rename to src/db/db/dbDXFWriter.h
diff --git a/src/db/dbEdge.cc b/src/db/db/dbEdge.cc
similarity index 100%
rename from src/db/dbEdge.cc
rename to src/db/db/dbEdge.cc
diff --git a/src/db/dbEdge.h b/src/db/db/dbEdge.h
similarity index 100%
rename from src/db/dbEdge.h
rename to src/db/db/dbEdge.h
diff --git a/src/db/dbEdgePair.cc b/src/db/db/dbEdgePair.cc
similarity index 100%
rename from src/db/dbEdgePair.cc
rename to src/db/db/dbEdgePair.cc
diff --git a/src/db/dbEdgePair.h b/src/db/db/dbEdgePair.h
similarity index 100%
rename from src/db/dbEdgePair.h
rename to src/db/db/dbEdgePair.h
diff --git a/src/db/dbEdgePairRelations.cc b/src/db/db/dbEdgePairRelations.cc
similarity index 100%
rename from src/db/dbEdgePairRelations.cc
rename to src/db/db/dbEdgePairRelations.cc
diff --git a/src/db/dbEdgePairRelations.h b/src/db/db/dbEdgePairRelations.h
similarity index 100%
rename from src/db/dbEdgePairRelations.h
rename to src/db/db/dbEdgePairRelations.h
diff --git a/src/db/dbEdgePairs.cc b/src/db/db/dbEdgePairs.cc
similarity index 100%
rename from src/db/dbEdgePairs.cc
rename to src/db/db/dbEdgePairs.cc
diff --git a/src/db/dbEdgePairs.h b/src/db/db/dbEdgePairs.h
similarity index 100%
rename from src/db/dbEdgePairs.h
rename to src/db/db/dbEdgePairs.h
diff --git a/src/db/dbEdgeProcessor.cc b/src/db/db/dbEdgeProcessor.cc
similarity index 100%
rename from src/db/dbEdgeProcessor.cc
rename to src/db/db/dbEdgeProcessor.cc
diff --git a/src/db/dbEdgeProcessor.h b/src/db/db/dbEdgeProcessor.h
similarity index 100%
rename from src/db/dbEdgeProcessor.h
rename to src/db/db/dbEdgeProcessor.h
diff --git a/src/db/dbEdges.cc b/src/db/db/dbEdges.cc
similarity index 100%
rename from src/db/dbEdges.cc
rename to src/db/db/dbEdges.cc
diff --git a/src/db/dbEdges.h b/src/db/db/dbEdges.h
similarity index 100%
rename from src/db/dbEdges.h
rename to src/db/db/dbEdges.h
diff --git a/src/db/dbEdgesToContours.h b/src/db/db/dbEdgesToContours.h
similarity index 100%
rename from src/db/dbEdgesToContours.h
rename to src/db/db/dbEdgesToContours.h
diff --git a/src/db/dbFillTool.cc b/src/db/db/dbFillTool.cc
similarity index 100%
rename from src/db/dbFillTool.cc
rename to src/db/db/dbFillTool.cc
diff --git a/src/db/dbFillTool.h b/src/db/db/dbFillTool.h
similarity index 100%
rename from src/db/dbFillTool.h
rename to src/db/db/dbFillTool.h
diff --git a/src/db/dbForceLinkStreams.cc b/src/db/db/dbForceLinkStreams.cc
similarity index 100%
rename from src/db/dbForceLinkStreams.cc
rename to src/db/db/dbForceLinkStreams.cc
diff --git a/src/db/dbFuzzyCellMapping.cc b/src/db/db/dbFuzzyCellMapping.cc
similarity index 100%
rename from src/db/dbFuzzyCellMapping.cc
rename to src/db/db/dbFuzzyCellMapping.cc
diff --git a/src/db/dbFuzzyCellMapping.h b/src/db/db/dbFuzzyCellMapping.h
similarity index 100%
rename from src/db/dbFuzzyCellMapping.h
rename to src/db/db/dbFuzzyCellMapping.h
diff --git a/src/db/dbGDS2.cc b/src/db/db/dbGDS2.cc
similarity index 100%
rename from src/db/dbGDS2.cc
rename to src/db/db/dbGDS2.cc
diff --git a/src/db/dbGDS2.h b/src/db/db/dbGDS2.h
similarity index 100%
rename from src/db/dbGDS2.h
rename to src/db/db/dbGDS2.h
diff --git a/src/db/dbGDS2Reader.cc b/src/db/db/dbGDS2Reader.cc
similarity index 100%
rename from src/db/dbGDS2Reader.cc
rename to src/db/db/dbGDS2Reader.cc
diff --git a/src/db/dbGDS2Reader.h b/src/db/db/dbGDS2Reader.h
similarity index 100%
rename from src/db/dbGDS2Reader.h
rename to src/db/db/dbGDS2Reader.h
diff --git a/src/db/dbGDS2ReaderBase.cc b/src/db/db/dbGDS2ReaderBase.cc
similarity index 100%
rename from src/db/dbGDS2ReaderBase.cc
rename to src/db/db/dbGDS2ReaderBase.cc
diff --git a/src/db/dbGDS2ReaderBase.h b/src/db/db/dbGDS2ReaderBase.h
similarity index 100%
rename from src/db/dbGDS2ReaderBase.h
rename to src/db/db/dbGDS2ReaderBase.h
diff --git a/src/db/dbGDS2Writer.cc b/src/db/db/dbGDS2Writer.cc
similarity index 100%
rename from src/db/dbGDS2Writer.cc
rename to src/db/db/dbGDS2Writer.cc
diff --git a/src/db/dbGDS2Writer.h b/src/db/db/dbGDS2Writer.h
similarity index 100%
rename from src/db/dbGDS2Writer.h
rename to src/db/db/dbGDS2Writer.h
diff --git a/src/db/dbGDS2WriterBase.cc b/src/db/db/dbGDS2WriterBase.cc
similarity index 100%
rename from src/db/dbGDS2WriterBase.cc
rename to src/db/db/dbGDS2WriterBase.cc
diff --git a/src/db/dbGDS2WriterBase.h b/src/db/db/dbGDS2WriterBase.h
similarity index 100%
rename from src/db/dbGDS2WriterBase.h
rename to src/db/db/dbGDS2WriterBase.h
diff --git a/src/db/dbGlyphs.cc b/src/db/db/dbGlyphs.cc
similarity index 100%
rename from src/db/dbGlyphs.cc
rename to src/db/db/dbGlyphs.cc
diff --git a/src/db/dbGlyphs.h b/src/db/db/dbGlyphs.h
similarity index 100%
rename from src/db/dbGlyphs.h
rename to src/db/db/dbGlyphs.h
diff --git a/src/db/dbHash.h b/src/db/db/dbHash.h
similarity index 100%
rename from src/db/dbHash.h
rename to src/db/db/dbHash.h
diff --git a/src/db/dbHershey.cc b/src/db/db/dbHershey.cc
similarity index 100%
rename from src/db/dbHershey.cc
rename to src/db/db/dbHershey.cc
diff --git a/src/db/dbHershey.h b/src/db/db/dbHershey.h
similarity index 100%
rename from src/db/dbHershey.h
rename to src/db/db/dbHershey.h
diff --git a/src/db/dbHersheyFont.h b/src/db/db/dbHersheyFont.h
similarity index 100%
rename from src/db/dbHersheyFont.h
rename to src/db/db/dbHersheyFont.h
diff --git a/src/db/dbInstElement.cc b/src/db/db/dbInstElement.cc
similarity index 100%
rename from src/db/dbInstElement.cc
rename to src/db/db/dbInstElement.cc
diff --git a/src/db/dbInstElement.h b/src/db/db/dbInstElement.h
similarity index 100%
rename from src/db/dbInstElement.h
rename to src/db/db/dbInstElement.h
diff --git a/src/db/dbInstances.cc b/src/db/db/dbInstances.cc
similarity index 100%
rename from src/db/dbInstances.cc
rename to src/db/db/dbInstances.cc
diff --git a/src/db/dbInstances.h b/src/db/db/dbInstances.h
similarity index 100%
rename from src/db/dbInstances.h
rename to src/db/db/dbInstances.h
diff --git a/src/db/dbLayer.h b/src/db/db/dbLayer.h
similarity index 100%
rename from src/db/dbLayer.h
rename to src/db/db/dbLayer.h
diff --git a/src/db/dbLayerMapping.cc b/src/db/db/dbLayerMapping.cc
similarity index 100%
rename from src/db/dbLayerMapping.cc
rename to src/db/db/dbLayerMapping.cc
diff --git a/src/db/dbLayerMapping.h b/src/db/db/dbLayerMapping.h
similarity index 100%
rename from src/db/dbLayerMapping.h
rename to src/db/db/dbLayerMapping.h
diff --git a/src/db/dbLayerProperties.cc b/src/db/db/dbLayerProperties.cc
similarity index 100%
rename from src/db/dbLayerProperties.cc
rename to src/db/db/dbLayerProperties.cc
diff --git a/src/db/dbLayerProperties.h b/src/db/db/dbLayerProperties.h
similarity index 100%
rename from src/db/dbLayerProperties.h
rename to src/db/db/dbLayerProperties.h
diff --git a/src/db/dbLayout.cc b/src/db/db/dbLayout.cc
similarity index 100%
rename from src/db/dbLayout.cc
rename to src/db/db/dbLayout.cc
diff --git a/src/db/dbLayout.h b/src/db/db/dbLayout.h
similarity index 100%
rename from src/db/dbLayout.h
rename to src/db/db/dbLayout.h
diff --git a/src/db/dbLayoutContextHandler.cc b/src/db/db/dbLayoutContextHandler.cc
similarity index 100%
rename from src/db/dbLayoutContextHandler.cc
rename to src/db/db/dbLayoutContextHandler.cc
diff --git a/src/db/dbLayoutContextHandler.h b/src/db/db/dbLayoutContextHandler.h
similarity index 100%
rename from src/db/dbLayoutContextHandler.h
rename to src/db/db/dbLayoutContextHandler.h
diff --git a/src/db/dbLayoutDiff.cc b/src/db/db/dbLayoutDiff.cc
similarity index 100%
rename from src/db/dbLayoutDiff.cc
rename to src/db/db/dbLayoutDiff.cc
diff --git a/src/db/dbLayoutDiff.h b/src/db/db/dbLayoutDiff.h
similarity index 100%
rename from src/db/dbLayoutDiff.h
rename to src/db/db/dbLayoutDiff.h
diff --git a/src/db/dbLayoutQuery.cc b/src/db/db/dbLayoutQuery.cc
similarity index 100%
rename from src/db/dbLayoutQuery.cc
rename to src/db/db/dbLayoutQuery.cc
diff --git a/src/db/dbLayoutQuery.h b/src/db/db/dbLayoutQuery.h
similarity index 100%
rename from src/db/dbLayoutQuery.h
rename to src/db/db/dbLayoutQuery.h
diff --git a/src/db/dbLayoutStateModel.cc b/src/db/db/dbLayoutStateModel.cc
similarity index 100%
rename from src/db/dbLayoutStateModel.cc
rename to src/db/db/dbLayoutStateModel.cc
diff --git a/src/db/dbLayoutStateModel.h b/src/db/db/dbLayoutStateModel.h
similarity index 100%
rename from src/db/dbLayoutStateModel.h
rename to src/db/db/dbLayoutStateModel.h
diff --git a/src/db/dbLayoutUtils.cc b/src/db/db/dbLayoutUtils.cc
similarity index 100%
rename from src/db/dbLayoutUtils.cc
rename to src/db/db/dbLayoutUtils.cc
diff --git a/src/db/dbLayoutUtils.h b/src/db/db/dbLayoutUtils.h
similarity index 100%
rename from src/db/dbLayoutUtils.h
rename to src/db/db/dbLayoutUtils.h
diff --git a/src/db/dbLibrary.cc b/src/db/db/dbLibrary.cc
similarity index 100%
rename from src/db/dbLibrary.cc
rename to src/db/db/dbLibrary.cc
diff --git a/src/db/dbLibrary.h b/src/db/db/dbLibrary.h
similarity index 100%
rename from src/db/dbLibrary.h
rename to src/db/db/dbLibrary.h
diff --git a/src/db/dbLibraryManager.cc b/src/db/db/dbLibraryManager.cc
similarity index 100%
rename from src/db/dbLibraryManager.cc
rename to src/db/db/dbLibraryManager.cc
diff --git a/src/db/dbLibraryManager.h b/src/db/db/dbLibraryManager.h
similarity index 100%
rename from src/db/dbLibraryManager.h
rename to src/db/db/dbLibraryManager.h
diff --git a/src/db/dbLibraryProxy.cc b/src/db/db/dbLibraryProxy.cc
similarity index 100%
rename from src/db/dbLibraryProxy.cc
rename to src/db/db/dbLibraryProxy.cc
diff --git a/src/db/dbLibraryProxy.h b/src/db/db/dbLibraryProxy.h
similarity index 100%
rename from src/db/dbLibraryProxy.h
rename to src/db/db/dbLibraryProxy.h
diff --git a/src/db/dbLoadLayoutOptions.cc b/src/db/db/dbLoadLayoutOptions.cc
similarity index 100%
rename from src/db/dbLoadLayoutOptions.cc
rename to src/db/db/dbLoadLayoutOptions.cc
diff --git a/src/db/dbLoadLayoutOptions.h b/src/db/db/dbLoadLayoutOptions.h
similarity index 100%
rename from src/db/dbLoadLayoutOptions.h
rename to src/db/db/dbLoadLayoutOptions.h
diff --git a/src/db/dbManager.cc b/src/db/db/dbManager.cc
similarity index 100%
rename from src/db/dbManager.cc
rename to src/db/db/dbManager.cc
diff --git a/src/db/dbManager.h b/src/db/db/dbManager.h
similarity index 100%
rename from src/db/dbManager.h
rename to src/db/db/dbManager.h
diff --git a/src/db/dbMatrix.cc b/src/db/db/dbMatrix.cc
similarity index 100%
rename from src/db/dbMatrix.cc
rename to src/db/db/dbMatrix.cc
diff --git a/src/db/dbMatrix.h b/src/db/db/dbMatrix.h
similarity index 100%
rename from src/db/dbMatrix.h
rename to src/db/db/dbMatrix.h
diff --git a/src/db/dbMemStatistics.cc b/src/db/db/dbMemStatistics.cc
similarity index 100%
rename from src/db/dbMemStatistics.cc
rename to src/db/db/dbMemStatistics.cc
diff --git a/src/db/dbMemStatistics.h b/src/db/db/dbMemStatistics.h
similarity index 100%
rename from src/db/dbMemStatistics.h
rename to src/db/db/dbMemStatistics.h
diff --git a/src/db/dbMetaInfo.h b/src/db/db/dbMetaInfo.h
similarity index 100%
rename from src/db/dbMetaInfo.h
rename to src/db/db/dbMetaInfo.h
diff --git a/src/db/dbOASIS.cc b/src/db/db/dbOASIS.cc
similarity index 100%
rename from src/db/dbOASIS.cc
rename to src/db/db/dbOASIS.cc
diff --git a/src/db/dbOASIS.h b/src/db/db/dbOASIS.h
similarity index 100%
rename from src/db/dbOASIS.h
rename to src/db/db/dbOASIS.h
diff --git a/src/db/dbOASISReader.cc b/src/db/db/dbOASISReader.cc
similarity index 100%
rename from src/db/dbOASISReader.cc
rename to src/db/db/dbOASISReader.cc
diff --git a/src/db/dbOASISReader.h b/src/db/db/dbOASISReader.h
similarity index 100%
rename from src/db/dbOASISReader.h
rename to src/db/db/dbOASISReader.h
diff --git a/src/db/dbOASISWriter.cc b/src/db/db/dbOASISWriter.cc
similarity index 100%
rename from src/db/dbOASISWriter.cc
rename to src/db/db/dbOASISWriter.cc
diff --git a/src/db/dbOASISWriter.h b/src/db/db/dbOASISWriter.h
similarity index 100%
rename from src/db/dbOASISWriter.h
rename to src/db/db/dbOASISWriter.h
diff --git a/src/db/dbObject.cc b/src/db/db/dbObject.cc
similarity index 100%
rename from src/db/dbObject.cc
rename to src/db/db/dbObject.cc
diff --git a/src/db/dbObject.h b/src/db/db/dbObject.h
similarity index 100%
rename from src/db/dbObject.h
rename to src/db/db/dbObject.h
diff --git a/src/db/dbObjectTag.h b/src/db/db/dbObjectTag.h
similarity index 100%
rename from src/db/dbObjectTag.h
rename to src/db/db/dbObjectTag.h
diff --git a/src/db/dbObjectWithProperties.h b/src/db/db/dbObjectWithProperties.h
similarity index 100%
rename from src/db/dbObjectWithProperties.h
rename to src/db/db/dbObjectWithProperties.h
diff --git a/src/db/dbPCellDeclaration.cc b/src/db/db/dbPCellDeclaration.cc
similarity index 100%
rename from src/db/dbPCellDeclaration.cc
rename to src/db/db/dbPCellDeclaration.cc
diff --git a/src/db/dbPCellDeclaration.h b/src/db/db/dbPCellDeclaration.h
similarity index 100%
rename from src/db/dbPCellDeclaration.h
rename to src/db/db/dbPCellDeclaration.h
diff --git a/src/db/dbPCellHeader.cc b/src/db/db/dbPCellHeader.cc
similarity index 100%
rename from src/db/dbPCellHeader.cc
rename to src/db/db/dbPCellHeader.cc
diff --git a/src/db/dbPCellHeader.h b/src/db/db/dbPCellHeader.h
similarity index 100%
rename from src/db/dbPCellHeader.h
rename to src/db/db/dbPCellHeader.h
diff --git a/src/db/dbPCellVariant.cc b/src/db/db/dbPCellVariant.cc
similarity index 100%
rename from src/db/dbPCellVariant.cc
rename to src/db/db/dbPCellVariant.cc
diff --git a/src/db/dbPCellVariant.h b/src/db/db/dbPCellVariant.h
similarity index 100%
rename from src/db/dbPCellVariant.h
rename to src/db/db/dbPCellVariant.h
diff --git a/src/db/dbPath.cc b/src/db/db/dbPath.cc
similarity index 100%
rename from src/db/dbPath.cc
rename to src/db/db/dbPath.cc
diff --git a/src/db/dbPath.h b/src/db/db/dbPath.h
similarity index 100%
rename from src/db/dbPath.h
rename to src/db/db/dbPath.h
diff --git a/src/db/dbPoint.cc b/src/db/db/dbPoint.cc
similarity index 100%
rename from src/db/dbPoint.cc
rename to src/db/db/dbPoint.cc
diff --git a/src/db/dbPoint.h b/src/db/db/dbPoint.h
similarity index 100%
rename from src/db/dbPoint.h
rename to src/db/db/dbPoint.h
diff --git a/src/db/dbPolygon.cc b/src/db/db/dbPolygon.cc
similarity index 100%
rename from src/db/dbPolygon.cc
rename to src/db/db/dbPolygon.cc
diff --git a/src/db/dbPolygon.h b/src/db/db/dbPolygon.h
similarity index 100%
rename from src/db/dbPolygon.h
rename to src/db/db/dbPolygon.h
diff --git a/src/db/dbPolygonGenerators.cc b/src/db/db/dbPolygonGenerators.cc
similarity index 100%
rename from src/db/dbPolygonGenerators.cc
rename to src/db/db/dbPolygonGenerators.cc
diff --git a/src/db/dbPolygonGenerators.h b/src/db/db/dbPolygonGenerators.h
similarity index 100%
rename from src/db/dbPolygonGenerators.h
rename to src/db/db/dbPolygonGenerators.h
diff --git a/src/db/dbPolygonTools.cc b/src/db/db/dbPolygonTools.cc
similarity index 100%
rename from src/db/dbPolygonTools.cc
rename to src/db/db/dbPolygonTools.cc
diff --git a/src/db/dbPolygonTools.h b/src/db/db/dbPolygonTools.h
similarity index 100%
rename from src/db/dbPolygonTools.h
rename to src/db/db/dbPolygonTools.h
diff --git a/src/db/dbPropertiesRepository.cc b/src/db/db/dbPropertiesRepository.cc
similarity index 100%
rename from src/db/dbPropertiesRepository.cc
rename to src/db/db/dbPropertiesRepository.cc
diff --git a/src/db/dbPropertiesRepository.h b/src/db/db/dbPropertiesRepository.h
similarity index 100%
rename from src/db/dbPropertiesRepository.h
rename to src/db/db/dbPropertiesRepository.h
diff --git a/src/db/dbReader.cc b/src/db/db/dbReader.cc
similarity index 100%
rename from src/db/dbReader.cc
rename to src/db/db/dbReader.cc
diff --git a/src/db/dbReader.h b/src/db/db/dbReader.h
similarity index 100%
rename from src/db/dbReader.h
rename to src/db/db/dbReader.h
diff --git a/src/db/dbRecursiveShapeIterator.cc b/src/db/db/dbRecursiveShapeIterator.cc
similarity index 100%
rename from src/db/dbRecursiveShapeIterator.cc
rename to src/db/db/dbRecursiveShapeIterator.cc
diff --git a/src/db/dbRecursiveShapeIterator.h b/src/db/db/dbRecursiveShapeIterator.h
similarity index 100%
rename from src/db/dbRecursiveShapeIterator.h
rename to src/db/db/dbRecursiveShapeIterator.h
diff --git a/src/db/dbRegion.cc b/src/db/db/dbRegion.cc
similarity index 100%
rename from src/db/dbRegion.cc
rename to src/db/db/dbRegion.cc
diff --git a/src/db/dbRegion.h b/src/db/db/dbRegion.h
similarity index 100%
rename from src/db/dbRegion.h
rename to src/db/db/dbRegion.h
diff --git a/src/db/dbResources.qrc b/src/db/db/dbResources.qrc
similarity index 100%
rename from src/db/dbResources.qrc
rename to src/db/db/dbResources.qrc
diff --git a/src/db/dbSaveLayoutOptions.cc b/src/db/db/dbSaveLayoutOptions.cc
similarity index 100%
rename from src/db/dbSaveLayoutOptions.cc
rename to src/db/db/dbSaveLayoutOptions.cc
diff --git a/src/db/dbSaveLayoutOptions.h b/src/db/db/dbSaveLayoutOptions.h
similarity index 100%
rename from src/db/dbSaveLayoutOptions.h
rename to src/db/db/dbSaveLayoutOptions.h
diff --git a/src/db/dbShape.cc b/src/db/db/dbShape.cc
similarity index 100%
rename from src/db/dbShape.cc
rename to src/db/db/dbShape.cc
diff --git a/src/db/dbShape.h b/src/db/db/dbShape.h
similarity index 100%
rename from src/db/dbShape.h
rename to src/db/db/dbShape.h
diff --git a/src/db/dbShapeIterator.cc b/src/db/db/dbShapeIterator.cc
similarity index 100%
rename from src/db/dbShapeIterator.cc
rename to src/db/db/dbShapeIterator.cc
diff --git a/src/db/dbShapeProcessor.cc b/src/db/db/dbShapeProcessor.cc
similarity index 100%
rename from src/db/dbShapeProcessor.cc
rename to src/db/db/dbShapeProcessor.cc
diff --git a/src/db/dbShapeProcessor.h b/src/db/db/dbShapeProcessor.h
similarity index 100%
rename from src/db/dbShapeProcessor.h
rename to src/db/db/dbShapeProcessor.h
diff --git a/src/db/dbShapeRepository.h b/src/db/db/dbShapeRepository.h
similarity index 100%
rename from src/db/dbShapeRepository.h
rename to src/db/db/dbShapeRepository.h
diff --git a/src/db/dbShapes.cc b/src/db/db/dbShapes.cc
similarity index 100%
rename from src/db/dbShapes.cc
rename to src/db/db/dbShapes.cc
diff --git a/src/db/dbShapes.h b/src/db/db/dbShapes.h
similarity index 100%
rename from src/db/dbShapes.h
rename to src/db/db/dbShapes.h
diff --git a/src/db/dbShapes2.cc b/src/db/db/dbShapes2.cc
similarity index 100%
rename from src/db/dbShapes2.cc
rename to src/db/db/dbShapes2.cc
diff --git a/src/db/dbShapes2.h b/src/db/db/dbShapes2.h
similarity index 100%
rename from src/db/dbShapes2.h
rename to src/db/db/dbShapes2.h
diff --git a/src/db/dbShapes3.cc b/src/db/db/dbShapes3.cc
similarity index 100%
rename from src/db/dbShapes3.cc
rename to src/db/db/dbShapes3.cc
diff --git a/src/db/dbStatic.cc b/src/db/db/dbStatic.cc
similarity index 100%
rename from src/db/dbStatic.cc
rename to src/db/db/dbStatic.cc
diff --git a/src/db/dbStatic.h b/src/db/db/dbStatic.h
similarity index 100%
rename from src/db/dbStatic.h
rename to src/db/db/dbStatic.h
diff --git a/src/db/dbStream.cc b/src/db/db/dbStream.cc
similarity index 100%
rename from src/db/dbStream.cc
rename to src/db/db/dbStream.cc
diff --git a/src/db/dbStream.h b/src/db/db/dbStream.h
similarity index 100%
rename from src/db/dbStream.h
rename to src/db/db/dbStream.h
diff --git a/src/db/dbStreamLayers.cc b/src/db/db/dbStreamLayers.cc
similarity index 100%
rename from src/db/dbStreamLayers.cc
rename to src/db/db/dbStreamLayers.cc
diff --git a/src/db/dbStreamLayers.h b/src/db/db/dbStreamLayers.h
similarity index 100%
rename from src/db/dbStreamLayers.h
rename to src/db/db/dbStreamLayers.h
diff --git a/src/db/dbText.cc b/src/db/db/dbText.cc
similarity index 100%
rename from src/db/dbText.cc
rename to src/db/db/dbText.cc
diff --git a/src/db/dbText.h b/src/db/db/dbText.h
similarity index 100%
rename from src/db/dbText.h
rename to src/db/db/dbText.h
diff --git a/src/db/dbTextWriter.cc b/src/db/db/dbTextWriter.cc
similarity index 100%
rename from src/db/dbTextWriter.cc
rename to src/db/db/dbTextWriter.cc
diff --git a/src/db/dbTextWriter.h b/src/db/db/dbTextWriter.h
similarity index 100%
rename from src/db/dbTextWriter.h
rename to src/db/db/dbTextWriter.h
diff --git a/src/db/dbTilingProcessor.cc b/src/db/db/dbTilingProcessor.cc
similarity index 100%
rename from src/db/dbTilingProcessor.cc
rename to src/db/db/dbTilingProcessor.cc
diff --git a/src/db/dbTilingProcessor.h b/src/db/db/dbTilingProcessor.h
similarity index 100%
rename from src/db/dbTilingProcessor.h
rename to src/db/db/dbTilingProcessor.h
diff --git a/src/db/dbTrans.cc b/src/db/db/dbTrans.cc
similarity index 100%
rename from src/db/dbTrans.cc
rename to src/db/db/dbTrans.cc
diff --git a/src/db/dbTrans.h b/src/db/db/dbTrans.h
similarity index 100%
rename from src/db/dbTrans.h
rename to src/db/db/dbTrans.h
diff --git a/src/db/dbTypes.h b/src/db/db/dbTypes.h
similarity index 100%
rename from src/db/dbTypes.h
rename to src/db/db/dbTypes.h
diff --git a/src/db/dbUserObject.cc b/src/db/db/dbUserObject.cc
similarity index 100%
rename from src/db/dbUserObject.cc
rename to src/db/db/dbUserObject.cc
diff --git a/src/db/dbUserObject.h b/src/db/db/dbUserObject.h
similarity index 100%
rename from src/db/dbUserObject.h
rename to src/db/db/dbUserObject.h
diff --git a/src/db/dbVector.cc b/src/db/db/dbVector.cc
similarity index 100%
rename from src/db/dbVector.cc
rename to src/db/db/dbVector.cc
diff --git a/src/db/dbVector.h b/src/db/db/dbVector.h
similarity index 100%
rename from src/db/dbVector.h
rename to src/db/db/dbVector.h
diff --git a/src/db/dbWriter.cc b/src/db/db/dbWriter.cc
similarity index 100%
rename from src/db/dbWriter.cc
rename to src/db/db/dbWriter.cc
diff --git a/src/db/dbWriter.h b/src/db/db/dbWriter.h
similarity index 100%
rename from src/db/dbWriter.h
rename to src/db/db/dbWriter.h
diff --git a/src/db/dbWriterTools.cc b/src/db/db/dbWriterTools.cc
similarity index 100%
rename from src/db/dbWriterTools.cc
rename to src/db/db/dbWriterTools.cc
diff --git a/src/db/dbWriterTools.h b/src/db/db/dbWriterTools.h
similarity index 100%
rename from src/db/dbWriterTools.h
rename to src/db/db/dbWriterTools.h
diff --git a/src/db/fonts.cc b/src/db/db/fonts.cc
similarity index 100%
rename from src/db/fonts.cc
rename to src/db/db/fonts.cc
diff --git a/src/db/gsiDeclDbBox.cc b/src/db/db/gsiDeclDbBox.cc
similarity index 100%
rename from src/db/gsiDeclDbBox.cc
rename to src/db/db/gsiDeclDbBox.cc
diff --git a/src/db/gsiDeclDbCell.cc b/src/db/db/gsiDeclDbCell.cc
similarity index 100%
rename from src/db/gsiDeclDbCell.cc
rename to src/db/db/gsiDeclDbCell.cc
diff --git a/src/db/gsiDeclDbCellMapping.cc b/src/db/db/gsiDeclDbCellMapping.cc
similarity index 100%
rename from src/db/gsiDeclDbCellMapping.cc
rename to src/db/db/gsiDeclDbCellMapping.cc
diff --git a/src/db/gsiDeclDbEdge.cc b/src/db/db/gsiDeclDbEdge.cc
similarity index 100%
rename from src/db/gsiDeclDbEdge.cc
rename to src/db/db/gsiDeclDbEdge.cc
diff --git a/src/db/gsiDeclDbEdgePair.cc b/src/db/db/gsiDeclDbEdgePair.cc
similarity index 100%
rename from src/db/gsiDeclDbEdgePair.cc
rename to src/db/db/gsiDeclDbEdgePair.cc
diff --git a/src/db/gsiDeclDbEdgePairs.cc b/src/db/db/gsiDeclDbEdgePairs.cc
similarity index 100%
rename from src/db/gsiDeclDbEdgePairs.cc
rename to src/db/db/gsiDeclDbEdgePairs.cc
diff --git a/src/db/gsiDeclDbEdgeProcessor.cc b/src/db/db/gsiDeclDbEdgeProcessor.cc
similarity index 100%
rename from src/db/gsiDeclDbEdgeProcessor.cc
rename to src/db/db/gsiDeclDbEdgeProcessor.cc
diff --git a/src/db/gsiDeclDbEdges.cc b/src/db/db/gsiDeclDbEdges.cc
similarity index 100%
rename from src/db/gsiDeclDbEdges.cc
rename to src/db/db/gsiDeclDbEdges.cc
diff --git a/src/db/gsiDeclDbGlyphs.cc b/src/db/db/gsiDeclDbGlyphs.cc
similarity index 100%
rename from src/db/gsiDeclDbGlyphs.cc
rename to src/db/db/gsiDeclDbGlyphs.cc
diff --git a/src/db/gsiDeclDbInstElement.cc b/src/db/db/gsiDeclDbInstElement.cc
similarity index 100%
rename from src/db/gsiDeclDbInstElement.cc
rename to src/db/db/gsiDeclDbInstElement.cc
diff --git a/src/db/gsiDeclDbLayerMapping.cc b/src/db/db/gsiDeclDbLayerMapping.cc
similarity index 100%
rename from src/db/gsiDeclDbLayerMapping.cc
rename to src/db/db/gsiDeclDbLayerMapping.cc
diff --git a/src/db/gsiDeclDbLayout.cc b/src/db/db/gsiDeclDbLayout.cc
similarity index 100%
rename from src/db/gsiDeclDbLayout.cc
rename to src/db/db/gsiDeclDbLayout.cc
diff --git a/src/db/gsiDeclDbLayoutDiff.cc b/src/db/db/gsiDeclDbLayoutDiff.cc
similarity index 100%
rename from src/db/gsiDeclDbLayoutDiff.cc
rename to src/db/db/gsiDeclDbLayoutDiff.cc
diff --git a/src/db/gsiDeclDbLayoutQuery.cc b/src/db/db/gsiDeclDbLayoutQuery.cc
similarity index 100%
rename from src/db/gsiDeclDbLayoutQuery.cc
rename to src/db/db/gsiDeclDbLayoutQuery.cc
diff --git a/src/db/gsiDeclDbLayoutUtils.cc b/src/db/db/gsiDeclDbLayoutUtils.cc
similarity index 100%
rename from src/db/gsiDeclDbLayoutUtils.cc
rename to src/db/db/gsiDeclDbLayoutUtils.cc
diff --git a/src/db/gsiDeclDbLibrary.cc b/src/db/db/gsiDeclDbLibrary.cc
similarity index 100%
rename from src/db/gsiDeclDbLibrary.cc
rename to src/db/db/gsiDeclDbLibrary.cc
diff --git a/src/db/gsiDeclDbManager.cc b/src/db/db/gsiDeclDbManager.cc
similarity index 100%
rename from src/db/gsiDeclDbManager.cc
rename to src/db/db/gsiDeclDbManager.cc
diff --git a/src/db/gsiDeclDbMatrix.cc b/src/db/db/gsiDeclDbMatrix.cc
similarity index 100%
rename from src/db/gsiDeclDbMatrix.cc
rename to src/db/db/gsiDeclDbMatrix.cc
diff --git a/src/db/gsiDeclDbPath.cc b/src/db/db/gsiDeclDbPath.cc
similarity index 100%
rename from src/db/gsiDeclDbPath.cc
rename to src/db/db/gsiDeclDbPath.cc
diff --git a/src/db/gsiDeclDbPoint.cc b/src/db/db/gsiDeclDbPoint.cc
similarity index 100%
rename from src/db/gsiDeclDbPoint.cc
rename to src/db/db/gsiDeclDbPoint.cc
diff --git a/src/db/gsiDeclDbPolygon.cc b/src/db/db/gsiDeclDbPolygon.cc
similarity index 100%
rename from src/db/gsiDeclDbPolygon.cc
rename to src/db/db/gsiDeclDbPolygon.cc
diff --git a/src/db/gsiDeclDbReader.cc b/src/db/db/gsiDeclDbReader.cc
similarity index 100%
rename from src/db/gsiDeclDbReader.cc
rename to src/db/db/gsiDeclDbReader.cc
diff --git a/src/db/gsiDeclDbRecursiveShapeIterator.cc b/src/db/db/gsiDeclDbRecursiveShapeIterator.cc
similarity index 100%
rename from src/db/gsiDeclDbRecursiveShapeIterator.cc
rename to src/db/db/gsiDeclDbRecursiveShapeIterator.cc
diff --git a/src/db/gsiDeclDbRegion.cc b/src/db/db/gsiDeclDbRegion.cc
similarity index 100%
rename from src/db/gsiDeclDbRegion.cc
rename to src/db/db/gsiDeclDbRegion.cc
diff --git a/src/db/gsiDeclDbShape.cc b/src/db/db/gsiDeclDbShape.cc
similarity index 100%
rename from src/db/gsiDeclDbShape.cc
rename to src/db/db/gsiDeclDbShape.cc
diff --git a/src/db/gsiDeclDbShapeProcessor.cc b/src/db/db/gsiDeclDbShapeProcessor.cc
similarity index 100%
rename from src/db/gsiDeclDbShapeProcessor.cc
rename to src/db/db/gsiDeclDbShapeProcessor.cc
diff --git a/src/db/gsiDeclDbShapes.cc b/src/db/db/gsiDeclDbShapes.cc
similarity index 100%
rename from src/db/gsiDeclDbShapes.cc
rename to src/db/db/gsiDeclDbShapes.cc
diff --git a/src/db/gsiDeclDbText.cc b/src/db/db/gsiDeclDbText.cc
similarity index 100%
rename from src/db/gsiDeclDbText.cc
rename to src/db/db/gsiDeclDbText.cc
diff --git a/src/db/gsiDeclDbTilingProcessor.cc b/src/db/db/gsiDeclDbTilingProcessor.cc
similarity index 100%
rename from src/db/gsiDeclDbTilingProcessor.cc
rename to src/db/db/gsiDeclDbTilingProcessor.cc
diff --git a/src/db/gsiDeclDbTrans.cc b/src/db/db/gsiDeclDbTrans.cc
similarity index 100%
rename from src/db/gsiDeclDbTrans.cc
rename to src/db/db/gsiDeclDbTrans.cc
diff --git a/src/db/gsiDeclDbVector.cc b/src/db/db/gsiDeclDbVector.cc
similarity index 100%
rename from src/db/gsiDeclDbVector.cc
rename to src/db/db/gsiDeclDbVector.cc
diff --git a/src/db/std_font.gds b/src/db/db/std_font.gds
similarity index 100%
rename from src/db/std_font.gds
rename to src/db/db/std_font.gds
diff --git a/src/unit_tests/dbArray.cc b/src/db/unit_tests/dbArray.cc
similarity index 100%
rename from src/unit_tests/dbArray.cc
rename to src/db/unit_tests/dbArray.cc
diff --git a/src/unit_tests/dbBox.cc b/src/db/unit_tests/dbBox.cc
similarity index 100%
rename from src/unit_tests/dbBox.cc
rename to src/db/unit_tests/dbBox.cc
diff --git a/src/unit_tests/dbBoxScanner.cc b/src/db/unit_tests/dbBoxScanner.cc
similarity index 100%
rename from src/unit_tests/dbBoxScanner.cc
rename to src/db/unit_tests/dbBoxScanner.cc
diff --git a/src/unit_tests/dbBoxTree.cc b/src/db/unit_tests/dbBoxTree.cc
similarity index 100%
rename from src/unit_tests/dbBoxTree.cc
rename to src/db/unit_tests/dbBoxTree.cc
diff --git a/src/unit_tests/dbCIFReader.cc b/src/db/unit_tests/dbCIFReader.cc
similarity index 100%
rename from src/unit_tests/dbCIFReader.cc
rename to src/db/unit_tests/dbCIFReader.cc
diff --git a/src/unit_tests/dbCell.cc b/src/db/unit_tests/dbCell.cc
similarity index 100%
rename from src/unit_tests/dbCell.cc
rename to src/db/unit_tests/dbCell.cc
diff --git a/src/unit_tests/dbCellGraphUtils.cc b/src/db/unit_tests/dbCellGraphUtils.cc
similarity index 100%
rename from src/unit_tests/dbCellGraphUtils.cc
rename to src/db/unit_tests/dbCellGraphUtils.cc
diff --git a/src/unit_tests/dbCellHullGenerator.cc b/src/db/unit_tests/dbCellHullGenerator.cc
similarity index 100%
rename from src/unit_tests/dbCellHullGenerator.cc
rename to src/db/unit_tests/dbCellHullGenerator.cc
diff --git a/src/unit_tests/dbCellMapping.cc b/src/db/unit_tests/dbCellMapping.cc
similarity index 100%
rename from src/unit_tests/dbCellMapping.cc
rename to src/db/unit_tests/dbCellMapping.cc
diff --git a/src/unit_tests/dbClip.cc b/src/db/unit_tests/dbClip.cc
similarity index 100%
rename from src/unit_tests/dbClip.cc
rename to src/db/unit_tests/dbClip.cc
diff --git a/src/unit_tests/dbDXFReader.cc b/src/db/unit_tests/dbDXFReader.cc
similarity index 100%
rename from src/unit_tests/dbDXFReader.cc
rename to src/db/unit_tests/dbDXFReader.cc
diff --git a/src/unit_tests/dbEdge.cc b/src/db/unit_tests/dbEdge.cc
similarity index 100%
rename from src/unit_tests/dbEdge.cc
rename to src/db/unit_tests/dbEdge.cc
diff --git a/src/unit_tests/dbEdgePair.cc b/src/db/unit_tests/dbEdgePair.cc
similarity index 100%
rename from src/unit_tests/dbEdgePair.cc
rename to src/db/unit_tests/dbEdgePair.cc
diff --git a/src/unit_tests/dbEdgePairRelations.cc b/src/db/unit_tests/dbEdgePairRelations.cc
similarity index 100%
rename from src/unit_tests/dbEdgePairRelations.cc
rename to src/db/unit_tests/dbEdgePairRelations.cc
diff --git a/src/unit_tests/dbEdgePairs.cc b/src/db/unit_tests/dbEdgePairs.cc
similarity index 100%
rename from src/unit_tests/dbEdgePairs.cc
rename to src/db/unit_tests/dbEdgePairs.cc
diff --git a/src/unit_tests/dbEdgeProcessor.cc b/src/db/unit_tests/dbEdgeProcessor.cc
similarity index 100%
rename from src/unit_tests/dbEdgeProcessor.cc
rename to src/db/unit_tests/dbEdgeProcessor.cc
diff --git a/src/unit_tests/dbEdges.cc b/src/db/unit_tests/dbEdges.cc
similarity index 100%
rename from src/unit_tests/dbEdges.cc
rename to src/db/unit_tests/dbEdges.cc
diff --git a/src/unit_tests/dbEdgesToContours.cc b/src/db/unit_tests/dbEdgesToContours.cc
similarity index 100%
rename from src/unit_tests/dbEdgesToContours.cc
rename to src/db/unit_tests/dbEdgesToContours.cc
diff --git a/src/unit_tests/dbGDS2Reader.cc b/src/db/unit_tests/dbGDS2Reader.cc
similarity index 100%
rename from src/unit_tests/dbGDS2Reader.cc
rename to src/db/unit_tests/dbGDS2Reader.cc
diff --git a/src/unit_tests/dbGDS2Writer.cc b/src/db/unit_tests/dbGDS2Writer.cc
similarity index 100%
rename from src/unit_tests/dbGDS2Writer.cc
rename to src/db/unit_tests/dbGDS2Writer.cc
diff --git a/src/unit_tests/dbLayer.cc b/src/db/unit_tests/dbLayer.cc
similarity index 100%
rename from src/unit_tests/dbLayer.cc
rename to src/db/unit_tests/dbLayer.cc
diff --git a/src/unit_tests/dbLayerMapping.cc b/src/db/unit_tests/dbLayerMapping.cc
similarity index 100%
rename from src/unit_tests/dbLayerMapping.cc
rename to src/db/unit_tests/dbLayerMapping.cc
diff --git a/src/unit_tests/dbLayout.cc b/src/db/unit_tests/dbLayout.cc
similarity index 100%
rename from src/unit_tests/dbLayout.cc
rename to src/db/unit_tests/dbLayout.cc
diff --git a/src/unit_tests/dbLayoutDiff.cc b/src/db/unit_tests/dbLayoutDiff.cc
similarity index 100%
rename from src/unit_tests/dbLayoutDiff.cc
rename to src/db/unit_tests/dbLayoutDiff.cc
diff --git a/src/unit_tests/dbLayoutQuery.cc b/src/db/unit_tests/dbLayoutQuery.cc
similarity index 100%
rename from src/unit_tests/dbLayoutQuery.cc
rename to src/db/unit_tests/dbLayoutQuery.cc
diff --git a/src/unit_tests/dbLibraries.cc b/src/db/unit_tests/dbLibraries.cc
similarity index 100%
rename from src/unit_tests/dbLibraries.cc
rename to src/db/unit_tests/dbLibraries.cc
diff --git a/src/unit_tests/dbMatrix.cc b/src/db/unit_tests/dbMatrix.cc
similarity index 100%
rename from src/unit_tests/dbMatrix.cc
rename to src/db/unit_tests/dbMatrix.cc
diff --git a/src/unit_tests/dbOASISReader.cc b/src/db/unit_tests/dbOASISReader.cc
similarity index 100%
rename from src/unit_tests/dbOASISReader.cc
rename to src/db/unit_tests/dbOASISReader.cc
diff --git a/src/unit_tests/dbOASISWriter.cc b/src/db/unit_tests/dbOASISWriter.cc
similarity index 100%
rename from src/unit_tests/dbOASISWriter.cc
rename to src/db/unit_tests/dbOASISWriter.cc
diff --git a/src/unit_tests/dbOASISWriter2.cc b/src/db/unit_tests/dbOASISWriter2.cc
similarity index 100%
rename from src/unit_tests/dbOASISWriter2.cc
rename to src/db/unit_tests/dbOASISWriter2.cc
diff --git a/src/unit_tests/dbObject.cc b/src/db/unit_tests/dbObject.cc
similarity index 100%
rename from src/unit_tests/dbObject.cc
rename to src/db/unit_tests/dbObject.cc
diff --git a/src/unit_tests/dbPCells.cc b/src/db/unit_tests/dbPCells.cc
similarity index 100%
rename from src/unit_tests/dbPCells.cc
rename to src/db/unit_tests/dbPCells.cc
diff --git a/src/unit_tests/dbPath.cc b/src/db/unit_tests/dbPath.cc
similarity index 100%
rename from src/unit_tests/dbPath.cc
rename to src/db/unit_tests/dbPath.cc
diff --git a/src/unit_tests/dbPoint.cc b/src/db/unit_tests/dbPoint.cc
similarity index 100%
rename from src/unit_tests/dbPoint.cc
rename to src/db/unit_tests/dbPoint.cc
diff --git a/src/unit_tests/dbPolygon.cc b/src/db/unit_tests/dbPolygon.cc
similarity index 100%
rename from src/unit_tests/dbPolygon.cc
rename to src/db/unit_tests/dbPolygon.cc
diff --git a/src/unit_tests/dbPolygonTools.cc b/src/db/unit_tests/dbPolygonTools.cc
similarity index 100%
rename from src/unit_tests/dbPolygonTools.cc
rename to src/db/unit_tests/dbPolygonTools.cc
diff --git a/src/unit_tests/dbPropertiesRepository.cc b/src/db/unit_tests/dbPropertiesRepository.cc
similarity index 100%
rename from src/unit_tests/dbPropertiesRepository.cc
rename to src/db/unit_tests/dbPropertiesRepository.cc
diff --git a/src/unit_tests/dbRecursiveShapeIterator.cc b/src/db/unit_tests/dbRecursiveShapeIterator.cc
similarity index 100%
rename from src/unit_tests/dbRecursiveShapeIterator.cc
rename to src/db/unit_tests/dbRecursiveShapeIterator.cc
diff --git a/src/unit_tests/dbRegion.cc b/src/db/unit_tests/dbRegion.cc
similarity index 100%
rename from src/unit_tests/dbRegion.cc
rename to src/db/unit_tests/dbRegion.cc
diff --git a/src/unit_tests/dbShape.cc b/src/db/unit_tests/dbShape.cc
similarity index 100%
rename from src/unit_tests/dbShape.cc
rename to src/db/unit_tests/dbShape.cc
diff --git a/src/unit_tests/dbShapeArray.cc b/src/db/unit_tests/dbShapeArray.cc
similarity index 100%
rename from src/unit_tests/dbShapeArray.cc
rename to src/db/unit_tests/dbShapeArray.cc
diff --git a/src/unit_tests/dbShapeRepository.cc b/src/db/unit_tests/dbShapeRepository.cc
similarity index 100%
rename from src/unit_tests/dbShapeRepository.cc
rename to src/db/unit_tests/dbShapeRepository.cc
diff --git a/src/unit_tests/dbShapes.cc b/src/db/unit_tests/dbShapes.cc
similarity index 100%
rename from src/unit_tests/dbShapes.cc
rename to src/db/unit_tests/dbShapes.cc
diff --git a/src/unit_tests/dbStreamLayers.cc b/src/db/unit_tests/dbStreamLayers.cc
similarity index 100%
rename from src/unit_tests/dbStreamLayers.cc
rename to src/db/unit_tests/dbStreamLayers.cc
diff --git a/src/unit_tests/dbText.cc b/src/db/unit_tests/dbText.cc
similarity index 100%
rename from src/unit_tests/dbText.cc
rename to src/db/unit_tests/dbText.cc
diff --git a/src/unit_tests/dbTilingProcessor.cc b/src/db/unit_tests/dbTilingProcessor.cc
similarity index 100%
rename from src/unit_tests/dbTilingProcessor.cc
rename to src/db/unit_tests/dbTilingProcessor.cc
diff --git a/src/unit_tests/dbTrans.cc b/src/db/unit_tests/dbTrans.cc
similarity index 100%
rename from src/unit_tests/dbTrans.cc
rename to src/db/unit_tests/dbTrans.cc
diff --git a/src/unit_tests/dbVector.cc b/src/db/unit_tests/dbVector.cc
similarity index 100%
rename from src/unit_tests/dbVector.cc
rename to src/db/unit_tests/dbVector.cc
diff --git a/src/unit_tests/dbWriterTools.cc b/src/db/unit_tests/dbWriterTools.cc
similarity index 100%
rename from src/unit_tests/dbWriterTools.cc
rename to src/db/unit_tests/dbWriterTools.cc
diff --git a/src/db/unit_tests/unit_tests.pro b/src/db/unit_tests/unit_tests.pro
new file mode 100644
index 000000000..0488daec9
--- /dev/null
+++ b/src/db/unit_tests/unit_tests.pro
@@ -0,0 +1,64 @@
+
+DESTDIR_UT = $$OUT_PWD/../..
+DESTDIR = $$OUT_PWD/..
+
+TARGET = db_tests
+
+include($$PWD/../../lib_ut.pri)
+
+SOURCES = \
+ dbArray.cc \
+ dbBox.cc \
+ dbBoxScanner.cc \
+ dbBoxTree.cc \
+ dbCell.cc \
+ dbCellGraphUtils.cc \
+ dbCellHullGenerator.cc \
+ dbCellMapping.cc \
+ dbCIFReader.cc \
+ dbClip.cc \
+ dbDXFReader.cc \
+ dbEdge.cc \
+ dbEdgePair.cc \
+ dbEdgePairRelations.cc \
+ dbEdgePairs.cc \
+ dbEdgeProcessor.cc \
+ dbEdges.cc \
+ dbEdgesToContours.cc \
+ dbGDS2Reader.cc \
+ dbGDS2Writer.cc \
+ dbLayer.cc \
+ dbLayerMapping.cc \
+ dbLayout.cc \
+ dbLayoutDiff.cc \
+ dbLayoutQuery.cc \
+ dbLibraries.cc \
+ dbMatrix.cc \
+ dbOASISReader.cc \
+ dbOASISWriter2.cc \
+ dbOASISWriter.cc \
+ dbObject.cc \
+ dbPath.cc \
+ dbPCells.cc \
+ dbPoint.cc \
+ dbPolygon.cc \
+ dbPolygonTools.cc \
+ dbPropertiesRepository.cc \
+ dbRecursiveShapeIterator.cc \
+ dbRegion.cc \
+ dbShapeArray.cc \
+ dbShape.cc \
+ dbShapeRepository.cc \
+ dbShapes.cc \
+ dbStreamLayers.cc \
+ dbText.cc \
+ dbTilingProcessor.cc \
+ dbTrans.cc \
+ dbVector.cc \
+ dbWriterTools.cc \
+
+INCLUDEPATH += $$TL_INC $$DB_INC $$GSI_INC $$UT_INC
+DEPENDPATH += $$TL_INC $$DB_INC $$GSI_INC $$UT_INC
+
+LIBS += -L$$DESTDIR_UT -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_ut
+
diff --git a/src/drc/drc/drc.pro b/src/drc/drc/drc.pro
index a203a36ff..9f0f97cb6 100644
--- a/src/drc/drc/drc.pro
+++ b/src/drc/drc/drc.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/../..
TARGET = klayout_drc
-include($$PWD/../../klayout.pri)
include($$PWD/../../lib.pri)
DEFINES += MAKE_DRC_LIBRARY
diff --git a/src/drc/unit_tests/unit_tests.pro b/src/drc/unit_tests/unit_tests.pro
index 1965c0fa1..f491ba223 100644
--- a/src/drc/unit_tests/unit_tests.pro
+++ b/src/drc/unit_tests/unit_tests.pro
@@ -4,7 +4,6 @@ DESTDIR = $$OUT_PWD/..
TARGET = drc_tests
-include($$PWD/../../klayout.pri)
include($$PWD/../../lib_ut.pri)
SOURCES = \
@@ -12,7 +11,7 @@ SOURCES = \
drcSimpleTests.cc \
drcSuiteTests.cc \
-INCLUDEPATH += ../drc ../../rdb ../../db ../../tl ../../gsi ../../lym ../../ut
-DEPENDPATH += ../drc ../../rdb ../../db ../../tl ../../gsi ../../lym ../../ut
+INCLUDEPATH += $$DRC_INC $$TL_INC $$RDB_INC $$DB_INC $$GSI_INC $$LYM_INC $$UT_INC
+DEPENDPATH += $$DRC_INC $$TL_INC $$RDB_INC $$DB_INC $$GSI_INC $$LYM_INC $$UT_INC
LIBS += -L$$DESTDIR_UT -lklayout_drc -lklayout_rdb -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_lym -lklayout_ut
diff --git a/src/edt/edt.pro b/src/edt/edt.pro
index c4c841c14..6f66fa669 100644
--- a/src/edt/edt.pro
+++ b/src/edt/edt.pro
@@ -1,71 +1,6 @@
-DESTDIR = $$OUT_PWD/..
-TARGET = klayout_edt
+TEMPLATE = subdirs
+SUBDIRS = edt unit_tests
-include($$PWD/../klayout.pri)
-include($$PWD/../lib.pri)
-
-DEFINES += MAKE_EDT_LIBRARY
-
-HEADERS = \
- edtConfig.h \
- edtDialogs.h \
- edtEditorOptionsPages.h \
- edtInstPropertiesPage.h \
- edtMainService.h \
- edtPartialService.h \
- edtPCellParametersPage.h \
- edtPlugin.h \
- edtPropertiesPages.h \
- edtPropertiesPageUtils.h \
- edtService.h \
- edtServiceImpl.h \
- edtUtils.h \
- edtCommon.h
-
-FORMS = \
- AlignOptionsDialog.ui \
- BoxPropertiesPage.ui \
- CopyModeDialog.ui \
- ChangeLayerOptionsDialog.ui \
- EditablePathPropertiesPage.ui \
- EditorOptionsDialog.ui \
- EditorOptionsGeneric.ui \
- EditorOptionsInst.ui \
- EditorOptionsPath.ui \
- EditorOptionsText.ui \
- InstantiationForm.ui \
- InstPropertiesPage.ui \
- MakeArrayOptionsDialog.ui \
- MakeCellOptionsDialog.ui \
- PathPropertiesPage.ui \
- PolygonPropertiesPage.ui \
- RoundCornerOptionsDialog.ui \
- TextPropertiesPage.ui \
-
-SOURCES = \
- edtConfig.cc \
- edtDialogs.cc \
- edtEditorOptionsPages.cc \
- edtInstPropertiesPage.cc \
- edtMainService.cc \
- edtPartialService.cc \
- edtPCellParametersPage.cc \
- edtPlugin.cc \
- edtPropertiesPages.cc \
- edtPropertiesPageUtils.cc \
- edtService.cc \
- edtServiceImpl.cc \
- edtUtils.cc \
- gsiDeclEdt.cc \
-
-INCLUDEPATH += ../tl ../gsi ../laybasic ../db
-DEPENDPATH += ../tl ../gsi ../laybasic ../db
-
-# Note: this accounts for UI-generated headers placed into the output folders in
-# shadow builds:
-INCLUDEPATH += $$DESTDIR/laybasic
-DEPENDPATH += $$DESTDIR/laybasic
-
-LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db
+unit_tests.depends += edt
diff --git a/src/edt/AlignOptionsDialog.ui b/src/edt/edt/AlignOptionsDialog.ui
similarity index 100%
rename from src/edt/AlignOptionsDialog.ui
rename to src/edt/edt/AlignOptionsDialog.ui
diff --git a/src/edt/BoxPropertiesPage.ui b/src/edt/edt/BoxPropertiesPage.ui
similarity index 100%
rename from src/edt/BoxPropertiesPage.ui
rename to src/edt/edt/BoxPropertiesPage.ui
diff --git a/src/edt/ChangeLayerOptionsDialog.ui b/src/edt/edt/ChangeLayerOptionsDialog.ui
similarity index 100%
rename from src/edt/ChangeLayerOptionsDialog.ui
rename to src/edt/edt/ChangeLayerOptionsDialog.ui
diff --git a/src/edt/CopyModeDialog.ui b/src/edt/edt/CopyModeDialog.ui
similarity index 100%
rename from src/edt/CopyModeDialog.ui
rename to src/edt/edt/CopyModeDialog.ui
diff --git a/src/edt/EditablePathPropertiesPage.ui b/src/edt/edt/EditablePathPropertiesPage.ui
similarity index 100%
rename from src/edt/EditablePathPropertiesPage.ui
rename to src/edt/edt/EditablePathPropertiesPage.ui
diff --git a/src/edt/EditorOptionsDialog.ui b/src/edt/edt/EditorOptionsDialog.ui
similarity index 100%
rename from src/edt/EditorOptionsDialog.ui
rename to src/edt/edt/EditorOptionsDialog.ui
diff --git a/src/edt/EditorOptionsGeneric.ui b/src/edt/edt/EditorOptionsGeneric.ui
similarity index 100%
rename from src/edt/EditorOptionsGeneric.ui
rename to src/edt/edt/EditorOptionsGeneric.ui
diff --git a/src/edt/EditorOptionsInst.ui b/src/edt/edt/EditorOptionsInst.ui
similarity index 100%
rename from src/edt/EditorOptionsInst.ui
rename to src/edt/edt/EditorOptionsInst.ui
diff --git a/src/edt/EditorOptionsPath.ui b/src/edt/edt/EditorOptionsPath.ui
similarity index 100%
rename from src/edt/EditorOptionsPath.ui
rename to src/edt/edt/EditorOptionsPath.ui
diff --git a/src/edt/EditorOptionsText.ui b/src/edt/edt/EditorOptionsText.ui
similarity index 100%
rename from src/edt/EditorOptionsText.ui
rename to src/edt/edt/EditorOptionsText.ui
diff --git a/src/edt/InstPropertiesPage.ui b/src/edt/edt/InstPropertiesPage.ui
similarity index 100%
rename from src/edt/InstPropertiesPage.ui
rename to src/edt/edt/InstPropertiesPage.ui
diff --git a/src/edt/InstantiationForm.ui b/src/edt/edt/InstantiationForm.ui
similarity index 100%
rename from src/edt/InstantiationForm.ui
rename to src/edt/edt/InstantiationForm.ui
diff --git a/src/edt/MakeArrayOptionsDialog.ui b/src/edt/edt/MakeArrayOptionsDialog.ui
similarity index 100%
rename from src/edt/MakeArrayOptionsDialog.ui
rename to src/edt/edt/MakeArrayOptionsDialog.ui
diff --git a/src/edt/MakeCellOptionsDialog.ui b/src/edt/edt/MakeCellOptionsDialog.ui
similarity index 100%
rename from src/edt/MakeCellOptionsDialog.ui
rename to src/edt/edt/MakeCellOptionsDialog.ui
diff --git a/src/edt/PathPropertiesPage.ui b/src/edt/edt/PathPropertiesPage.ui
similarity index 100%
rename from src/edt/PathPropertiesPage.ui
rename to src/edt/edt/PathPropertiesPage.ui
diff --git a/src/edt/PolygonPropertiesPage.ui b/src/edt/edt/PolygonPropertiesPage.ui
similarity index 100%
rename from src/edt/PolygonPropertiesPage.ui
rename to src/edt/edt/PolygonPropertiesPage.ui
diff --git a/src/edt/RoundCornerOptionsDialog.ui b/src/edt/edt/RoundCornerOptionsDialog.ui
similarity index 100%
rename from src/edt/RoundCornerOptionsDialog.ui
rename to src/edt/edt/RoundCornerOptionsDialog.ui
diff --git a/src/edt/TextPropertiesPage.ui b/src/edt/edt/TextPropertiesPage.ui
similarity index 100%
rename from src/edt/TextPropertiesPage.ui
rename to src/edt/edt/TextPropertiesPage.ui
diff --git a/src/edt/edt/edt.pro b/src/edt/edt/edt.pro
new file mode 100644
index 000000000..a9d477036
--- /dev/null
+++ b/src/edt/edt/edt.pro
@@ -0,0 +1,70 @@
+
+DESTDIR = $$OUT_PWD/../..
+TARGET = klayout_edt
+
+include($$PWD/../../lib.pri)
+
+DEFINES += MAKE_EDT_LIBRARY
+
+HEADERS = \
+ edtConfig.h \
+ edtDialogs.h \
+ edtEditorOptionsPages.h \
+ edtInstPropertiesPage.h \
+ edtMainService.h \
+ edtPartialService.h \
+ edtPCellParametersPage.h \
+ edtPlugin.h \
+ edtPropertiesPages.h \
+ edtPropertiesPageUtils.h \
+ edtService.h \
+ edtServiceImpl.h \
+ edtUtils.h \
+ edtCommon.h
+
+FORMS = \
+ AlignOptionsDialog.ui \
+ BoxPropertiesPage.ui \
+ CopyModeDialog.ui \
+ ChangeLayerOptionsDialog.ui \
+ EditablePathPropertiesPage.ui \
+ EditorOptionsDialog.ui \
+ EditorOptionsGeneric.ui \
+ EditorOptionsInst.ui \
+ EditorOptionsPath.ui \
+ EditorOptionsText.ui \
+ InstantiationForm.ui \
+ InstPropertiesPage.ui \
+ MakeArrayOptionsDialog.ui \
+ MakeCellOptionsDialog.ui \
+ PathPropertiesPage.ui \
+ PolygonPropertiesPage.ui \
+ RoundCornerOptionsDialog.ui \
+ TextPropertiesPage.ui \
+
+SOURCES = \
+ edtConfig.cc \
+ edtDialogs.cc \
+ edtEditorOptionsPages.cc \
+ edtInstPropertiesPage.cc \
+ edtMainService.cc \
+ edtPartialService.cc \
+ edtPCellParametersPage.cc \
+ edtPlugin.cc \
+ edtPropertiesPages.cc \
+ edtPropertiesPageUtils.cc \
+ edtService.cc \
+ edtServiceImpl.cc \
+ edtUtils.cc \
+ gsiDeclEdt.cc \
+
+INCLUDEPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$DB_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$DB_INC
+
+# Note: this accounts for UI-generated headers placed into the output folders in
+# shadow builds:
+INCLUDEPATH += $$DESTDIR/laybasic
+DEPENDPATH += $$DESTDIR/laybasic
+
+LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db
+
diff --git a/src/edt/edtCommon.h b/src/edt/edt/edtCommon.h
similarity index 100%
rename from src/edt/edtCommon.h
rename to src/edt/edt/edtCommon.h
diff --git a/src/edt/edtConfig.cc b/src/edt/edt/edtConfig.cc
similarity index 100%
rename from src/edt/edtConfig.cc
rename to src/edt/edt/edtConfig.cc
diff --git a/src/edt/edtConfig.h b/src/edt/edt/edtConfig.h
similarity index 100%
rename from src/edt/edtConfig.h
rename to src/edt/edt/edtConfig.h
diff --git a/src/edt/edtDialogs.cc b/src/edt/edt/edtDialogs.cc
similarity index 100%
rename from src/edt/edtDialogs.cc
rename to src/edt/edt/edtDialogs.cc
diff --git a/src/edt/edtDialogs.h b/src/edt/edt/edtDialogs.h
similarity index 100%
rename from src/edt/edtDialogs.h
rename to src/edt/edt/edtDialogs.h
diff --git a/src/edt/edtEditorOptionsPages.cc b/src/edt/edt/edtEditorOptionsPages.cc
similarity index 100%
rename from src/edt/edtEditorOptionsPages.cc
rename to src/edt/edt/edtEditorOptionsPages.cc
diff --git a/src/edt/edtEditorOptionsPages.h b/src/edt/edt/edtEditorOptionsPages.h
similarity index 100%
rename from src/edt/edtEditorOptionsPages.h
rename to src/edt/edt/edtEditorOptionsPages.h
diff --git a/src/edt/edtInstPropertiesPage.cc b/src/edt/edt/edtInstPropertiesPage.cc
similarity index 100%
rename from src/edt/edtInstPropertiesPage.cc
rename to src/edt/edt/edtInstPropertiesPage.cc
diff --git a/src/edt/edtInstPropertiesPage.h b/src/edt/edt/edtInstPropertiesPage.h
similarity index 100%
rename from src/edt/edtInstPropertiesPage.h
rename to src/edt/edt/edtInstPropertiesPage.h
diff --git a/src/edt/edtMainService.cc b/src/edt/edt/edtMainService.cc
similarity index 100%
rename from src/edt/edtMainService.cc
rename to src/edt/edt/edtMainService.cc
diff --git a/src/edt/edtMainService.h b/src/edt/edt/edtMainService.h
similarity index 100%
rename from src/edt/edtMainService.h
rename to src/edt/edt/edtMainService.h
diff --git a/src/edt/edtPCellParametersPage.cc b/src/edt/edt/edtPCellParametersPage.cc
similarity index 100%
rename from src/edt/edtPCellParametersPage.cc
rename to src/edt/edt/edtPCellParametersPage.cc
diff --git a/src/edt/edtPCellParametersPage.h b/src/edt/edt/edtPCellParametersPage.h
similarity index 100%
rename from src/edt/edtPCellParametersPage.h
rename to src/edt/edt/edtPCellParametersPage.h
diff --git a/src/edt/edtPartialService.cc b/src/edt/edt/edtPartialService.cc
similarity index 100%
rename from src/edt/edtPartialService.cc
rename to src/edt/edt/edtPartialService.cc
diff --git a/src/edt/edtPartialService.h b/src/edt/edt/edtPartialService.h
similarity index 100%
rename from src/edt/edtPartialService.h
rename to src/edt/edt/edtPartialService.h
diff --git a/src/edt/edtPlugin.cc b/src/edt/edt/edtPlugin.cc
similarity index 100%
rename from src/edt/edtPlugin.cc
rename to src/edt/edt/edtPlugin.cc
diff --git a/src/edt/edtPlugin.h b/src/edt/edt/edtPlugin.h
similarity index 100%
rename from src/edt/edtPlugin.h
rename to src/edt/edt/edtPlugin.h
diff --git a/src/edt/edtPropertiesPageUtils.cc b/src/edt/edt/edtPropertiesPageUtils.cc
similarity index 100%
rename from src/edt/edtPropertiesPageUtils.cc
rename to src/edt/edt/edtPropertiesPageUtils.cc
diff --git a/src/edt/edtPropertiesPageUtils.h b/src/edt/edt/edtPropertiesPageUtils.h
similarity index 100%
rename from src/edt/edtPropertiesPageUtils.h
rename to src/edt/edt/edtPropertiesPageUtils.h
diff --git a/src/edt/edtPropertiesPages.cc b/src/edt/edt/edtPropertiesPages.cc
similarity index 100%
rename from src/edt/edtPropertiesPages.cc
rename to src/edt/edt/edtPropertiesPages.cc
diff --git a/src/edt/edtPropertiesPages.h b/src/edt/edt/edtPropertiesPages.h
similarity index 100%
rename from src/edt/edtPropertiesPages.h
rename to src/edt/edt/edtPropertiesPages.h
diff --git a/src/edt/edtService.cc b/src/edt/edt/edtService.cc
similarity index 100%
rename from src/edt/edtService.cc
rename to src/edt/edt/edtService.cc
diff --git a/src/edt/edtService.h b/src/edt/edt/edtService.h
similarity index 100%
rename from src/edt/edtService.h
rename to src/edt/edt/edtService.h
diff --git a/src/edt/edtServiceImpl.cc b/src/edt/edt/edtServiceImpl.cc
similarity index 100%
rename from src/edt/edtServiceImpl.cc
rename to src/edt/edt/edtServiceImpl.cc
diff --git a/src/edt/edtServiceImpl.h b/src/edt/edt/edtServiceImpl.h
similarity index 100%
rename from src/edt/edtServiceImpl.h
rename to src/edt/edt/edtServiceImpl.h
diff --git a/src/edt/edtUtils.cc b/src/edt/edt/edtUtils.cc
similarity index 100%
rename from src/edt/edtUtils.cc
rename to src/edt/edt/edtUtils.cc
diff --git a/src/edt/edtUtils.h b/src/edt/edt/edtUtils.h
similarity index 100%
rename from src/edt/edtUtils.h
rename to src/edt/edt/edtUtils.h
diff --git a/src/edt/gsiDeclEdt.cc b/src/edt/edt/gsiDeclEdt.cc
similarity index 100%
rename from src/edt/gsiDeclEdt.cc
rename to src/edt/edt/gsiDeclEdt.cc
diff --git a/src/edt/unit_tests/edtBasicTests.cc b/src/edt/unit_tests/edtBasicTests.cc
new file mode 100644
index 000000000..a0717c951
--- /dev/null
+++ b/src/edt/unit_tests/edtBasicTests.cc
@@ -0,0 +1,31 @@
+
+/*
+
+ 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 "utHead.h"
+
+TEST(1)
+{
+ // TODO: add tests for edt specific things
+ throw tl::CancelException (); // skip this test to indicate that there is nothing yet
+}
+
diff --git a/src/edt/unit_tests/unit_tests.pro b/src/edt/unit_tests/unit_tests.pro
new file mode 100644
index 000000000..525df220c
--- /dev/null
+++ b/src/edt/unit_tests/unit_tests.pro
@@ -0,0 +1,16 @@
+
+DESTDIR_UT = $$OUT_PWD/../..
+DESTDIR = $$OUT_PWD/..
+
+TARGET = edt_tests
+
+include($$PWD/../../lib_ut.pri)
+
+SOURCES = \
+ edtBasicTests.cc \
+
+INCLUDEPATH += $$EDT_INC $$TL_INC $$LAYBASIC_INC $$DB_INC $$GSI_INC $$UT_INC
+DEPENDPATH += $$EDT_INC $$TL_INC $$LAYBASIC_INC $$DB_INC $$GSI_INC $$UT_INC
+
+LIBS += -L$$DESTDIR_UT -lklayout_edt -lklayout_laybasic -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_ut
+
diff --git a/src/ext/ext.pro b/src/ext/ext.pro
index 0fddb6484..45d7ea1fc 100644
--- a/src/ext/ext.pro
+++ b/src/ext/ext.pro
@@ -1,83 +1,6 @@
-DESTDIR = $$OUT_PWD/..
-TARGET = klayout_ext
+TEMPLATE = subdirs
+SUBDIRS = ext unit_tests
-include($$PWD/../klayout.pri)
-include($$PWD/../lib.pri)
-
-DEFINES += MAKE_EXT_LIBRARY
-
-HEADERS += \
- extBooleanOperationsDialogs.h \
- extDEFImporter.h \
- extDiffToolDialog.h \
- extGerberDrillFileReader.h \
- extGerberImportDialog.h \
- extGerberImporter.h \
- extLEFDEFImportDialogs.h \
- extLEFDEFImporter.h \
- extLEFImporter.h \
- extNetTracer.h \
- extNetTracerConfig.h \
- extNetTracerDialog.h \
- extNetTracerIO.h \
- extRS274XApertures.h \
- extRS274XReader.h \
- extStreamImportDialog.h \
- extStreamImporter.h \
- extXORToolDialog.h \
- extCommon.h \
- extForceLink.h
-
-FORMS += \
- BooleanOptionsDialog.ui \
- DiffToolDialog.ui \
- GerberImportDialog.ui \
- LEFDEFImportOptionsDialog.ui \
- LEFDEFTechnologyComponentEditor.ui \
- NetTracerConfigPage.ui \
- NetTracerDialog.ui \
- NetTracerTechComponentEditor.ui \
- SizingOptionsDialog.ui \
- StreamImportDialog.ui \
- MergeOptionsDialog.ui \
-
-SOURCES += \
- extBooleanOperationsDialogs.cc \
- extBooleanOperationsPlugin.cc \
- extDEFImporter.cc \
- extDiffPlugin.cc \
- extDiffToolDialog.cc \
- extForceLink.cc \
- extGerberDrillFileReader.cc \
- extGerberImport.cc \
- extGerberImportDialog.cc \
- extGerberImporter.cc \
- extLEFDEFImport.cc \
- extLEFDEFImportDialogs.cc \
- extLEFDEFImporter.cc \
- extLEFImporter.cc \
- extNetTracer.cc \
- extNetTracerConfig.cc \
- extNetTracerDialog.cc \
- extNetTracerIO.cc \
- extNetTracerPlugin.cc \
- extRS274XApertures.cc \
- extRS274XReader.cc \
- extStreamImport.cc \
- extStreamImportDialog.cc \
- extStreamImporter.cc \
- extXORPlugin.cc \
- extXORToolDialog.cc \
- extLEFDEFPlugin.cc
-
-INCLUDEPATH += ../tl ../gsi ../laybasic ../lay ../db ../rdb ../ant ../edt
-DEPENDPATH += ../tl ../gsi ../laybasic ../lay ../db ../rdb ../ant ../edt
-
-# Note: this accounts for UI-generated headers placed into the output folders in
-# shadow builds:
-INCLUDEPATH += $$DESTDIR/laybasic $$OUT_PWD/../lay
-DEPENDPATH += $$DESTDIR/laybasic $$OUT_PWD/../lay
-
-LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db -lklayout_rdb -lklayout_lay -lklayout_ant -lklayout_edt
+unit_tests.depends += ext
diff --git a/src/ext/BooleanOptionsDialog.ui b/src/ext/ext/BooleanOptionsDialog.ui
similarity index 100%
rename from src/ext/BooleanOptionsDialog.ui
rename to src/ext/ext/BooleanOptionsDialog.ui
diff --git a/src/ext/DiffToolDialog.ui b/src/ext/ext/DiffToolDialog.ui
similarity index 100%
rename from src/ext/DiffToolDialog.ui
rename to src/ext/ext/DiffToolDialog.ui
diff --git a/src/ext/GerberImportDialog.ui b/src/ext/ext/GerberImportDialog.ui
similarity index 100%
rename from src/ext/GerberImportDialog.ui
rename to src/ext/ext/GerberImportDialog.ui
diff --git a/src/ext/LEFDEFImportOptionsDialog.ui b/src/ext/ext/LEFDEFImportOptionsDialog.ui
similarity index 100%
rename from src/ext/LEFDEFImportOptionsDialog.ui
rename to src/ext/ext/LEFDEFImportOptionsDialog.ui
diff --git a/src/ext/LEFDEFTechnologyComponentEditor.ui b/src/ext/ext/LEFDEFTechnologyComponentEditor.ui
similarity index 100%
rename from src/ext/LEFDEFTechnologyComponentEditor.ui
rename to src/ext/ext/LEFDEFTechnologyComponentEditor.ui
diff --git a/src/ext/MergeOptionsDialog.ui b/src/ext/ext/MergeOptionsDialog.ui
similarity index 100%
rename from src/ext/MergeOptionsDialog.ui
rename to src/ext/ext/MergeOptionsDialog.ui
diff --git a/src/ext/NetTracerConfigPage.ui b/src/ext/ext/NetTracerConfigPage.ui
similarity index 100%
rename from src/ext/NetTracerConfigPage.ui
rename to src/ext/ext/NetTracerConfigPage.ui
diff --git a/src/ext/NetTracerDialog.ui b/src/ext/ext/NetTracerDialog.ui
similarity index 100%
rename from src/ext/NetTracerDialog.ui
rename to src/ext/ext/NetTracerDialog.ui
diff --git a/src/ext/NetTracerTechComponentEditor.ui b/src/ext/ext/NetTracerTechComponentEditor.ui
similarity index 100%
rename from src/ext/NetTracerTechComponentEditor.ui
rename to src/ext/ext/NetTracerTechComponentEditor.ui
diff --git a/src/ext/SizingOptionsDialog.ui b/src/ext/ext/SizingOptionsDialog.ui
similarity index 100%
rename from src/ext/SizingOptionsDialog.ui
rename to src/ext/ext/SizingOptionsDialog.ui
diff --git a/src/ext/StreamImportDialog.ui b/src/ext/ext/StreamImportDialog.ui
similarity index 100%
rename from src/ext/StreamImportDialog.ui
rename to src/ext/ext/StreamImportDialog.ui
diff --git a/src/ext/ext/ext.pro b/src/ext/ext/ext.pro
new file mode 100644
index 000000000..b85ebfd7b
--- /dev/null
+++ b/src/ext/ext/ext.pro
@@ -0,0 +1,86 @@
+
+DESTDIR = $$OUT_PWD/../..
+TARGET = klayout_ext
+
+include($$PWD/../../lib.pri)
+
+DEFINES += MAKE_EXT_LIBRARY
+
+HEADERS += \
+ extBooleanOperationsDialogs.h \
+ extDEFImporter.h \
+ extDiffToolDialog.h \
+ extGerberDrillFileReader.h \
+ extGerberImportDialog.h \
+ extGerberImporter.h \
+ extLEFDEFImportDialogs.h \
+ extLEFDEFImporter.h \
+ extLEFImporter.h \
+ extNetTracer.h \
+ extNetTracerConfig.h \
+ extNetTracerDialog.h \
+ extNetTracerIO.h \
+ extRS274XApertures.h \
+ extRS274XReader.h \
+ extStreamImportDialog.h \
+ extStreamImporter.h \
+ extXORToolDialog.h \
+ extCommon.h \
+ extForceLink.h
+
+FORMS += \
+ BooleanOptionsDialog.ui \
+ DiffToolDialog.ui \
+ GerberImportDialog.ui \
+ LEFDEFImportOptionsDialog.ui \
+ LEFDEFTechnologyComponentEditor.ui \
+ NetTracerConfigPage.ui \
+ NetTracerDialog.ui \
+ NetTracerTechComponentEditor.ui \
+ SizingOptionsDialog.ui \
+ StreamImportDialog.ui \
+ MergeOptionsDialog.ui \
+
+SOURCES += \
+ extBooleanOperationsDialogs.cc \
+ extBooleanOperationsPlugin.cc \
+ extDEFImporter.cc \
+ extDiffPlugin.cc \
+ extDiffToolDialog.cc \
+ extForceLink.cc \
+ extGerberDrillFileReader.cc \
+ extGerberImport.cc \
+ extGerberImportDialog.cc \
+ extGerberImporter.cc \
+ extLEFDEFImport.cc \
+ extLEFDEFImportDialogs.cc \
+ extLEFDEFImporter.cc \
+ extLEFImporter.cc \
+ extNetTracer.cc \
+ extNetTracerConfig.cc \
+ extNetTracerDialog.cc \
+ extNetTracerIO.cc \
+ extNetTracerPlugin.cc \
+ extRS274XApertures.cc \
+ extRS274XReader.cc \
+ extStreamImport.cc \
+ extStreamImportDialog.cc \
+ extStreamImporter.cc \
+ extXORPlugin.cc \
+ extXORToolDialog.cc \
+ extLEFDEFPlugin.cc
+
+INCLUDEPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC $$DB_INC $$RDB_INC $$ANT_INC $$EDT_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC $$DB_INC $$RDB_INC $$ANT_INC $$EDT_INC
+
+# Note: this accounts for UI-generated headers placed into the output folders in
+# shadow builds:
+INCLUDEPATH += $$DESTDIR/ext $$DESTDIR/laybasic
+DEPENDPATH += $$DESTDIR/ext $$DESTDIR/laybasic
+
+LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db -lklayout_rdb -lklayout_ant -lklayout_edt
+
+# TODO: ideally this should not be there:
+INCLUDEPATH += $$DESTDIR/lay
+DEPENDPATH += $$DESTDIR/lay
+LIBS += -L$$DESTDIR -lklayout_lay
diff --git a/src/ext/extBooleanOperationsDialogs.cc b/src/ext/ext/extBooleanOperationsDialogs.cc
similarity index 100%
rename from src/ext/extBooleanOperationsDialogs.cc
rename to src/ext/ext/extBooleanOperationsDialogs.cc
diff --git a/src/ext/extBooleanOperationsDialogs.h b/src/ext/ext/extBooleanOperationsDialogs.h
similarity index 100%
rename from src/ext/extBooleanOperationsDialogs.h
rename to src/ext/ext/extBooleanOperationsDialogs.h
diff --git a/src/ext/extBooleanOperationsPlugin.cc b/src/ext/ext/extBooleanOperationsPlugin.cc
similarity index 100%
rename from src/ext/extBooleanOperationsPlugin.cc
rename to src/ext/ext/extBooleanOperationsPlugin.cc
diff --git a/src/ext/extCommon.h b/src/ext/ext/extCommon.h
similarity index 100%
rename from src/ext/extCommon.h
rename to src/ext/ext/extCommon.h
diff --git a/src/ext/extDEFImporter.cc b/src/ext/ext/extDEFImporter.cc
similarity index 100%
rename from src/ext/extDEFImporter.cc
rename to src/ext/ext/extDEFImporter.cc
diff --git a/src/ext/extDEFImporter.h b/src/ext/ext/extDEFImporter.h
similarity index 100%
rename from src/ext/extDEFImporter.h
rename to src/ext/ext/extDEFImporter.h
diff --git a/src/ext/extDiffPlugin.cc b/src/ext/ext/extDiffPlugin.cc
similarity index 100%
rename from src/ext/extDiffPlugin.cc
rename to src/ext/ext/extDiffPlugin.cc
diff --git a/src/ext/extDiffToolDialog.cc b/src/ext/ext/extDiffToolDialog.cc
similarity index 100%
rename from src/ext/extDiffToolDialog.cc
rename to src/ext/ext/extDiffToolDialog.cc
diff --git a/src/ext/extDiffToolDialog.h b/src/ext/ext/extDiffToolDialog.h
similarity index 100%
rename from src/ext/extDiffToolDialog.h
rename to src/ext/ext/extDiffToolDialog.h
diff --git a/src/ext/extForceLink.cc b/src/ext/ext/extForceLink.cc
similarity index 100%
rename from src/ext/extForceLink.cc
rename to src/ext/ext/extForceLink.cc
diff --git a/src/ext/extForceLink.h b/src/ext/ext/extForceLink.h
similarity index 100%
rename from src/ext/extForceLink.h
rename to src/ext/ext/extForceLink.h
diff --git a/src/ext/extGerberDrillFileReader.cc b/src/ext/ext/extGerberDrillFileReader.cc
similarity index 100%
rename from src/ext/extGerberDrillFileReader.cc
rename to src/ext/ext/extGerberDrillFileReader.cc
diff --git a/src/ext/extGerberDrillFileReader.h b/src/ext/ext/extGerberDrillFileReader.h
similarity index 100%
rename from src/ext/extGerberDrillFileReader.h
rename to src/ext/ext/extGerberDrillFileReader.h
diff --git a/src/ext/extGerberImport.cc b/src/ext/ext/extGerberImport.cc
similarity index 100%
rename from src/ext/extGerberImport.cc
rename to src/ext/ext/extGerberImport.cc
diff --git a/src/ext/extGerberImportDialog.cc b/src/ext/ext/extGerberImportDialog.cc
similarity index 100%
rename from src/ext/extGerberImportDialog.cc
rename to src/ext/ext/extGerberImportDialog.cc
diff --git a/src/ext/extGerberImportDialog.h b/src/ext/ext/extGerberImportDialog.h
similarity index 100%
rename from src/ext/extGerberImportDialog.h
rename to src/ext/ext/extGerberImportDialog.h
diff --git a/src/ext/extGerberImporter.cc b/src/ext/ext/extGerberImporter.cc
similarity index 100%
rename from src/ext/extGerberImporter.cc
rename to src/ext/ext/extGerberImporter.cc
diff --git a/src/ext/extGerberImporter.h b/src/ext/ext/extGerberImporter.h
similarity index 100%
rename from src/ext/extGerberImporter.h
rename to src/ext/ext/extGerberImporter.h
diff --git a/src/ext/extLEFDEFImport.cc b/src/ext/ext/extLEFDEFImport.cc
similarity index 100%
rename from src/ext/extLEFDEFImport.cc
rename to src/ext/ext/extLEFDEFImport.cc
diff --git a/src/ext/extLEFDEFImportDialogs.cc b/src/ext/ext/extLEFDEFImportDialogs.cc
similarity index 100%
rename from src/ext/extLEFDEFImportDialogs.cc
rename to src/ext/ext/extLEFDEFImportDialogs.cc
diff --git a/src/ext/extLEFDEFImportDialogs.h b/src/ext/ext/extLEFDEFImportDialogs.h
similarity index 100%
rename from src/ext/extLEFDEFImportDialogs.h
rename to src/ext/ext/extLEFDEFImportDialogs.h
diff --git a/src/ext/extLEFDEFImporter.cc b/src/ext/ext/extLEFDEFImporter.cc
similarity index 100%
rename from src/ext/extLEFDEFImporter.cc
rename to src/ext/ext/extLEFDEFImporter.cc
diff --git a/src/ext/extLEFDEFImporter.h b/src/ext/ext/extLEFDEFImporter.h
similarity index 100%
rename from src/ext/extLEFDEFImporter.h
rename to src/ext/ext/extLEFDEFImporter.h
diff --git a/src/ext/extLEFDEFPlugin.cc b/src/ext/ext/extLEFDEFPlugin.cc
similarity index 100%
rename from src/ext/extLEFDEFPlugin.cc
rename to src/ext/ext/extLEFDEFPlugin.cc
diff --git a/src/ext/extLEFImporter.cc b/src/ext/ext/extLEFImporter.cc
similarity index 100%
rename from src/ext/extLEFImporter.cc
rename to src/ext/ext/extLEFImporter.cc
diff --git a/src/ext/extLEFImporter.h b/src/ext/ext/extLEFImporter.h
similarity index 100%
rename from src/ext/extLEFImporter.h
rename to src/ext/ext/extLEFImporter.h
diff --git a/src/ext/extNetTracer.cc b/src/ext/ext/extNetTracer.cc
similarity index 100%
rename from src/ext/extNetTracer.cc
rename to src/ext/ext/extNetTracer.cc
diff --git a/src/ext/extNetTracer.h b/src/ext/ext/extNetTracer.h
similarity index 100%
rename from src/ext/extNetTracer.h
rename to src/ext/ext/extNetTracer.h
diff --git a/src/ext/extNetTracerConfig.cc b/src/ext/ext/extNetTracerConfig.cc
similarity index 100%
rename from src/ext/extNetTracerConfig.cc
rename to src/ext/ext/extNetTracerConfig.cc
diff --git a/src/ext/extNetTracerConfig.h b/src/ext/ext/extNetTracerConfig.h
similarity index 100%
rename from src/ext/extNetTracerConfig.h
rename to src/ext/ext/extNetTracerConfig.h
diff --git a/src/ext/extNetTracerDialog.cc b/src/ext/ext/extNetTracerDialog.cc
similarity index 100%
rename from src/ext/extNetTracerDialog.cc
rename to src/ext/ext/extNetTracerDialog.cc
diff --git a/src/ext/extNetTracerDialog.h b/src/ext/ext/extNetTracerDialog.h
similarity index 100%
rename from src/ext/extNetTracerDialog.h
rename to src/ext/ext/extNetTracerDialog.h
diff --git a/src/ext/extNetTracerIO.cc b/src/ext/ext/extNetTracerIO.cc
similarity index 100%
rename from src/ext/extNetTracerIO.cc
rename to src/ext/ext/extNetTracerIO.cc
diff --git a/src/ext/extNetTracerIO.h b/src/ext/ext/extNetTracerIO.h
similarity index 100%
rename from src/ext/extNetTracerIO.h
rename to src/ext/ext/extNetTracerIO.h
diff --git a/src/ext/extNetTracerPlugin.cc b/src/ext/ext/extNetTracerPlugin.cc
similarity index 100%
rename from src/ext/extNetTracerPlugin.cc
rename to src/ext/ext/extNetTracerPlugin.cc
diff --git a/src/ext/extRS274XApertures.cc b/src/ext/ext/extRS274XApertures.cc
similarity index 100%
rename from src/ext/extRS274XApertures.cc
rename to src/ext/ext/extRS274XApertures.cc
diff --git a/src/ext/extRS274XApertures.h b/src/ext/ext/extRS274XApertures.h
similarity index 100%
rename from src/ext/extRS274XApertures.h
rename to src/ext/ext/extRS274XApertures.h
diff --git a/src/ext/extRS274XReader.cc b/src/ext/ext/extRS274XReader.cc
similarity index 100%
rename from src/ext/extRS274XReader.cc
rename to src/ext/ext/extRS274XReader.cc
diff --git a/src/ext/extRS274XReader.h b/src/ext/ext/extRS274XReader.h
similarity index 100%
rename from src/ext/extRS274XReader.h
rename to src/ext/ext/extRS274XReader.h
diff --git a/src/ext/extStreamImport.cc b/src/ext/ext/extStreamImport.cc
similarity index 100%
rename from src/ext/extStreamImport.cc
rename to src/ext/ext/extStreamImport.cc
diff --git a/src/ext/extStreamImportDialog.cc b/src/ext/ext/extStreamImportDialog.cc
similarity index 100%
rename from src/ext/extStreamImportDialog.cc
rename to src/ext/ext/extStreamImportDialog.cc
diff --git a/src/ext/extStreamImportDialog.h b/src/ext/ext/extStreamImportDialog.h
similarity index 100%
rename from src/ext/extStreamImportDialog.h
rename to src/ext/ext/extStreamImportDialog.h
diff --git a/src/ext/extStreamImporter.cc b/src/ext/ext/extStreamImporter.cc
similarity index 100%
rename from src/ext/extStreamImporter.cc
rename to src/ext/ext/extStreamImporter.cc
diff --git a/src/ext/extStreamImporter.h b/src/ext/ext/extStreamImporter.h
similarity index 100%
rename from src/ext/extStreamImporter.h
rename to src/ext/ext/extStreamImporter.h
diff --git a/src/ext/extXORPlugin.cc b/src/ext/ext/extXORPlugin.cc
similarity index 100%
rename from src/ext/extXORPlugin.cc
rename to src/ext/ext/extXORPlugin.cc
diff --git a/src/ext/extXORToolDialog.cc b/src/ext/ext/extXORToolDialog.cc
similarity index 100%
rename from src/ext/extXORToolDialog.cc
rename to src/ext/ext/extXORToolDialog.cc
diff --git a/src/ext/extXORToolDialog.h b/src/ext/ext/extXORToolDialog.h
similarity index 100%
rename from src/ext/extXORToolDialog.h
rename to src/ext/ext/extXORToolDialog.h
diff --git a/src/unit_tests/extGerberImport.cc b/src/ext/unit_tests/extGerberImport.cc
similarity index 99%
rename from src/unit_tests/extGerberImport.cc
rename to src/ext/unit_tests/extGerberImport.cc
index 49d7ddb36..dd1b7b9b2 100644
--- a/src/unit_tests/extGerberImport.cc
+++ b/src/ext/unit_tests/extGerberImport.cc
@@ -52,6 +52,7 @@ static void run_test (ut::TestBase *_this, const char *dir)
TEST(1)
{
+ test_is_long_runner ();
run_test (_this, "microchip-1");
}
diff --git a/src/unit_tests/extLEFDEFImport.cc b/src/ext/unit_tests/extLEFDEFImport.cc
similarity index 100%
rename from src/unit_tests/extLEFDEFImport.cc
rename to src/ext/unit_tests/extLEFDEFImport.cc
diff --git a/src/unit_tests/extNetTracer.cc b/src/ext/unit_tests/extNetTracer.cc
similarity index 100%
rename from src/unit_tests/extNetTracer.cc
rename to src/ext/unit_tests/extNetTracer.cc
diff --git a/src/ext/unit_tests/unit_tests.pro b/src/ext/unit_tests/unit_tests.pro
new file mode 100644
index 000000000..2aaac91ad
--- /dev/null
+++ b/src/ext/unit_tests/unit_tests.pro
@@ -0,0 +1,28 @@
+
+DESTDIR_UT = $$OUT_PWD/../..
+DESTDIR = $$OUT_PWD/..
+
+TARGET = ant_tests
+
+include($$PWD/../../lib_ut.pri)
+
+SOURCES = \
+ extGerberImport.cc \
+ extLEFDEFImport.cc \
+ extNetTracer.cc \
+
+INCLUDEPATH += $$EXT_INC $$TL_INC $$LAYBASIC_INC $$DB_INC $$GSI_INC $$UT_INC
+DEPENDPATH += $$EXT_INC $$TL_INC $$LAYBASIC_INC $$DB_INC $$GSI_INC $$UT_INC
+
+# Note: this accounts for UI-generated headers placed into the output folders in
+# shadow builds:
+INCLUDEPATH += $$DESTDIR/ext $$DESTDIR/laybasic
+DEPENDPATH += $$DESTDIR/ext $$DESTDIR/laybasic
+
+LIBS += -L$$DESTDIR_UT -lklayout_ext -lklayout_laybasic -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_ut
+
+# TODO: ideally this should not be there:
+INCLUDEPATH += $$DESTDIR/lay
+DEPENDPATH += $$DESTDIR/lay
+LIBS += -L$$DESTDIR -lklayout_lay
+
diff --git a/src/gsi/gsi.pro b/src/gsi/gsi.pro
index b13a1c41e..e3580d66b 100644
--- a/src/gsi/gsi.pro
+++ b/src/gsi/gsi.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_gsi
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_GSI_LIBRARY
@@ -49,7 +48,7 @@ HEADERS = \
# since gsi is dependent on tl
SOURCES += gsiDeclTl.cc
-INCLUDEPATH += ../tl
-DEPENDPATH += ../tl
+INCLUDEPATH += $$TL_INC
+DEPENDPATH += $$TL_INC
LIBS += -L$$DESTDIR -lklayout_tl
diff --git a/src/gsiqt/gsiqt.pro b/src/gsiqt/gsiqt.pro
index b6111c36f..fa60a1dfe 100644
--- a/src/gsiqt/gsiqt.pro
+++ b/src/gsiqt/gsiqt.pro
@@ -2,14 +2,13 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_gsiqt
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_GSIQT_LIBRARY
# NOTE: db is required since some bridges to db are provided (i.e db::Polygon)
-INCLUDEPATH += ../tl ../gsi ../db ../gsiqt
-DEPENDPATH += ../tl ../gsi ../db ../gsiqt
+INCLUDEPATH += $$TL_INC $$GSI_INC $$DB_INC $$GSIQT_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$DB_INC $$GSIQT_INC
LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_db
diff --git a/src/img/img.pro b/src/img/img.pro
index ca6bd6618..3c8b62c1b 100644
--- a/src/img/img.pro
+++ b/src/img/img.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_img
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_IMG_LIBRARY
@@ -34,7 +33,7 @@ SOURCES = \
imgWidgets.cc \
imgForceLink.cc
-INCLUDEPATH += ../tl ../gsi ../laybasic ../db
-DEPENDPATH += ../tl ../gsi ../laybasic ../db
+INCLUDEPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$DB_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$LAYBASIC_INC $$DB_INC
LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_db
diff --git a/src/klayout.pri b/src/klayout.pri
index 2a0864f24..c75a1d3b9 100644
--- a/src/klayout.pri
+++ b/src/klayout.pri
@@ -1,10 +1,10 @@
-ANT_INC = $$PWD/ant
+ANT_INC = $$PWD/ant/ant
BD_INC = $$PWD/buddies/src/bd
-DB_INC = $$PWD/db
+DB_INC = $$PWD/db/db
DRC_INC = $$PWD/drc/drc
-EDT_INC = $$PWD/edt
-EXT_INC = $$PWD/ext
+EDT_INC = $$PWD/edt/edt
+EXT_INC = $$PWD/ext/ext
GSI_INC = $$PWD/gsi
GSIQT_INC = $$PWD/gsiqt
IMG_INC = $$PWD/img
@@ -13,7 +13,7 @@ LAY_INC = $$PWD/lay
LAYBASIC_INC = $$PWD/laybasic
LYM_INC = $$PWD/lym
RDB_INC = $$PWD/rdb
-TL_INC = $$PWD/tl
+TL_INC = $$PWD/tl/tl
UT_INC = $$PWD/ut
VERSION_INC = $$PWD/version
diff --git a/src/lay/lay.pro b/src/lay/lay.pro
index 7bd23b429..f58a87323 100644
--- a/src/lay/lay.pro
+++ b/src/lay/lay.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_lay
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_LAY_LIBRARY
@@ -169,8 +168,8 @@ RESOURCES = layBuildInMacros.qrc \
layResources.qrc \
laySaltTemplates.qrc
-INCLUDEPATH += ../tl ../gsi ../db ../rdb ../lym ../laybasic ../ant ../img ../edt
-DEPENDPATH += ../tl ../gsi ../db ../rdb ../lym ../laybasic ../ant ../img ../edt
+INCLUDEPATH += $$TL_INC $$GSI_INC $$DB_INC $$RDB_INC $$LAYBASIC_INC $$ANT_INC $$IMG_INC $$EDT_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$DB_INC $$RDB_INC $$LAYBASIC_INC $$ANT_INC $$IMG_INC $$EDT_INC
LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_db -lklayout_rdb -lklayout_lym -lklayout_laybasic -lklayout_ant -lklayout_img -lklayout_edt
win32 {
@@ -185,30 +184,28 @@ win32 {
INCLUDEPATH += $$DESTDIR/laybasic
DEPENDPATH += $$DESTDIR/laybasic
-INCLUDEPATH += ../gsiqt
-DEPENDPATH += ../gsiqt
+INCLUDEPATH += $$GSIQT_INC
+DEPENDPATH += $$GSIQT_INC
equals(HAVE_QTBINDINGS, "1") {
LIBS += -lklayout_gsiqt
}
+INCLUDEPATH += $$RBA_INC
+DEPENDPATH += $$RBA_INC
+
equals(HAVE_RUBY, "1") {
- INCLUDEPATH += ../rba
- DEPENDPATH += ../rba
LIBS += -lklayout_rba
} else {
- INCLUDEPATH += ../rbastub
- DEPENDPATH += ../rbastub
LIBS += -lklayout_rbastub
}
+INCLUDEPATH += $$PYA_INC
+DEPENDPATH += $$PYA_INC
+
equals(HAVE_PYTHON, "1") {
- INCLUDEPATH += ../pya
- DEPENDPATH += ../pya
LIBS += -lklayout_pya
} else {
- INCLUDEPATH += ../pyastub
- DEPENDPATH += ../pyastub
LIBS += -lklayout_pyastub
}
diff --git a/src/laybasic/laybasic.pro b/src/laybasic/laybasic.pro
index 418c45833..91ebd89e7 100644
--- a/src/laybasic/laybasic.pro
+++ b/src/laybasic/laybasic.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_laybasic
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_LAYBASIC_LIBRARY
@@ -274,12 +273,12 @@ HEADERS = \
laybasicConfig.h \
layBackgroundAwareTreeStyle.h
-INCLUDEPATH += ../tl ../gsi ../db ../rdb
-DEPENDPATH += ../tl ../gsi ../db ../rdb
+INCLUDEPATH += $$TL_INC $$GSI_INC $$DB_INC $$RDB_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$DB_INC $$RDB_INC
LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_db -lklayout_rdb
-INCLUDEPATH += ../gsiqt
-DEPENDPATH += ../gsiqt
+INCLUDEPATH += $GSIQT_INC
+DEPENDPATH += $GSIQT_INC
equals(HAVE_QTBINDINGS, "1") {
LIBS += -lklayout_gsiqt
diff --git a/src/lib.pri b/src/lib.pri
index 45300b0ce..23eebfc37 100644
--- a/src/lib.pri
+++ b/src/lib.pri
@@ -1,4 +1,6 @@
+include($$PWD/klayout.pri)
+
TEMPLATE = lib
inst_target.path = $$PREFIX
diff --git a/src/lib/lib.pro b/src/lib/lib.pro
index a882cf04c..3b762c418 100644
--- a/src/lib/lib.pro
+++ b/src/lib/lib.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_lib
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_LIB_LIBRARY
@@ -35,7 +34,7 @@ SOURCES = \
RESOURCES = \
libResources.qrc
-INCLUDEPATH += ../gsi ../tl ../db
-DEPENDPATH += ../gsi ../tl ../db
+INCLUDEPATH += $$TL_INC $$GSI_INC $$DB_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$DB_INC
LIBS += -L$$DESTDIR -lklayout_gsi -lklayout_tl -lklayout_db
diff --git a/src/lib_ut.pri b/src/lib_ut.pri
index ad5c99a9a..44fb8868c 100644
--- a/src/lib_ut.pri
+++ b/src/lib_ut.pri
@@ -1,4 +1,6 @@
+include($$PWD/klayout.pri)
+
TEMPLATE = lib
# Only on Windows, DESTDIR_TARGET is usable. On this platform, a blank happens to appear between
@@ -8,3 +10,9 @@ win32 {
} else {
QMAKE_POST_LINK += $(COPY) $(DESTDIR)$(TARGET) $$DESTDIR_UT/$${TARGET}.ut
}
+
+equals(HAVE_QT5, "1") {
+ QT += testlib
+} else {
+ CONFIG += qtestlib
+}
diff --git a/src/lym/lym.pro b/src/lym/lym.pro
index 81a85c9a8..59f41828e 100644
--- a/src/lym/lym.pro
+++ b/src/lym/lym.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_lym
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_LYM_LIBRARY
@@ -17,7 +16,25 @@ HEADERS = \
lymMacroInterpreter.h \
lymMacro.h \
-INCLUDEPATH += ../tl ../gsi ../rba ../pya
-DEPENDPATH += ../tl ../gsi ../rba ../pya
-LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_rba -lklayout_pya
+INCLUDEPATH += $$TL_INC $$GSI_INC
+DEPENDPATH += $$TL_INC $$GSI_INC
+LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi
+
+INCLUDEPATH += $$RBA_INC
+DEPENDPATH += $$RBA_INC
+
+equals(HAVE_RUBY, "1") {
+ LIBS += -lklayout_rba
+} else {
+ LIBS += -lklayout_rbastub
+}
+
+INCLUDEPATH += $$PYA_INC
+DEPENDPATH += $$PYA_INC
+
+equals(HAVE_PYTHON, "1") {
+ LIBS += -lklayout_pya
+} else {
+ LIBS += -lklayout_pyastub
+}
diff --git a/src/plugins/plugin.pri b/src/plugins/plugin.pri
index 110318961..eb4db15ff 100644
--- a/src/plugins/plugin.pri
+++ b/src/plugins/plugin.pri
@@ -2,10 +2,12 @@
DESTDIR_KLP = $$OUT_PWD/../../..
DESTDIR = $$OUT_PWD/..
+include($$PWD/../klayout.pri)
+
TEMPLATE = lib
-INCLUDEPATH += ../../../db ../../../tl ../../../gsi ../../../laybasic ../../../lay ../../../common
-DEPENDPATH += ../../../db ../../../tl ../../../gsi ../../../laybasic ../../../lay ../../../common
+INCLUDEPATH += $$DB_INC $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC
+DEPENDPATH += $$DB_INC $$TL_INC $$GSI_INC $$LAYBASIC_INC $$LAY_INC
LIBS += -L$$DESTDIR_KLP -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_laybasic -lklayout_lay
# Only on Windows, DESTDIR_TARGET is usable. On this platform, a blank happens to appear between
diff --git a/src/pya/pya.pro b/src/pya/pya.pro
index 0e1624aaa..103c7ac40 100644
--- a/src/pya/pya.pro
+++ b/src/pya/pya.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_pya
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_PYA_LIBRARY
@@ -17,8 +16,8 @@ SOURCES = \
pyaRefs.cc \
pyaUtils.cc \
-INCLUDEPATH += $$PYTHONINCLUDE ../tl ../gsi
-DEPENDPATH += $$PYTHONINCLUDE ../tl ../gsi
+INCLUDEPATH += $$PYTHONINCLUDE $$TL_INC $$GSI_INC
+DEPENDPATH += $$PYTHONINCLUDE $$TL_INC $$GSI_INC
LIBS += $$PYTHONLIBFILE -L$$DESTDIR -lklayout_tl -lklayout_gsi
# Python is somewhat sloppy and relies on the compiler initializing fields
diff --git a/src/pyastub/pyastub.pro b/src/pyastub/pyastub.pro
index 5c43a3991..5aa72a343 100644
--- a/src/pyastub/pyastub.pro
+++ b/src/pyastub/pyastub.pro
@@ -2,15 +2,14 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_pyastub
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_PYA_LIBRARY
SOURCES = pya.cc
-INCLUDEPATH += ../tl ../gsi
-DEPENDPATH += ../tl ../gsi
+INCLUDEPATH += $$TL_INC $$GSI_INC
+DEPENDPATH += $$TL_INC $$GSI_INC
LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi
HEADERS += \
diff --git a/src/rba/rba.pro b/src/rba/rba.pro
index b7bd2ef05..0a5a90b38 100644
--- a/src/rba/rba.pro
+++ b/src/rba/rba.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_rba
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_RBA_LIBRARY
@@ -15,8 +14,8 @@ SOURCES = rba.cc \
rbaMarshal.cc
# NOTE: ../common needs to be before RUBYINCLUDE since there is a config.h too.
-INCLUDEPATH += ../common $$RUBYINCLUDE $$RUBYINCLUDE2 ../tl ../gsi
-DEPENDPATH += ../common $$RUBYINCLUDE $$RUBYINCLUDE2 ../tl ../gsi
+INCLUDEPATH += ../common $$RUBYINCLUDE $$RUBYINCLUDE2 $$TL_INC $$GSI_INC
+DEPENDPATH += ../common $$RUBYINCLUDE $$RUBYINCLUDE2 $$TL_INC $$GSI_INC
LIBS += $$RUBYLIBFILE -L$$DESTDIR -lklayout_tl -lklayout_gsi
diff --git a/src/rbastub/rbastub.pro b/src/rbastub/rbastub.pro
index c86e1478c..328245d8d 100644
--- a/src/rbastub/rbastub.pro
+++ b/src/rbastub/rbastub.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_rbastub
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_RBA_LIBRARY
@@ -11,7 +10,7 @@ HEADERS = rbaCommon.h
SOURCES = rba.cc
-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/rdb/rdb.pro b/src/rdb/rdb.pro
index 0e843ba65..eb0c4efec 100644
--- a/src/rdb/rdb.pro
+++ b/src/rdb/rdb.pro
@@ -2,7 +2,6 @@
DESTDIR = $$OUT_PWD/..
TARGET = klayout_rdb
-include($$PWD/../klayout.pri)
include($$PWD/../lib.pri)
DEFINES += MAKE_RDB_LIBRARY
@@ -29,7 +28,7 @@ HEADERS = \
rdbUtils.h \
rdbCommon.h
-INCLUDEPATH += ../tl ../gsi ../db
-DEPENDPATH += ../tl ../gsi ../db
+INCLUDEPATH += $$TL_INC $$GSI_INC $$DB_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$DB_INC
LIBS += -L$$DESTDIR -lklayout_tl -lklayout_gsi -lklayout_db
diff --git a/src/tl/tl.pro b/src/tl/tl.pro
index bf78d33c6..841b38262 100644
--- a/src/tl/tl.pro
+++ b/src/tl/tl.pro
@@ -1,98 +1,6 @@
-DESTDIR = $$OUT_PWD/..
-TARGET = klayout_tl
+TEMPLATE = subdirs
+SUBDIRS = tl unit_tests
-include($$PWD/../klayout.pri)
-include($$PWD/../lib.pri)
-
-DEFINES += MAKE_TL_LIBRARY
-
-LIBS += -lz
-
-FORMS = \
- PasswordDialog.ui
-
-SOURCES = \
- tlAssert.cc \
- tlClassRegistry.cc \
- tlDataMapping.cc \
- tlDeferredExecution.cc \
- tlDeflate.cc \
- tlException.cc \
- tlExceptions.cc \
- tlExpression.cc \
- tlEvents.cc \
- tlGlobPattern.cc \
- tlHeap.cc \
- tlHttpStream.cc \
- tlInternational.cc \
- tlLog.cc \
- tlObject.cc \
- tlProgress.cc \
- tlScriptError.cc \
- tlStaticObjects.cc \
- tlStream.cc \
- tlString.cc \
- tlSystemPaths.cc \
- tlThreadedWorkers.cc \
- tlTimer.cc \
- tlVariant.cc \
- tlXMLParser.cc \
- tlXMLWriter.cc \
- tlFileSystemWatcher.cc \
- tlFileUtils.cc \
- tlWebDAV.cc \
- tlArch.cc \
- tlCommandLineParser.cc
-
-HEADERS = \
- tlAlgorithm.h \
- tlAssert.h \
- tlClassRegistry.h \
- tlDataMapping.h \
- tlDeferredExecution.h \
- tlDeflate.h \
- tlException.h \
- tlExceptions.h \
- tlExpression.h \
- tlEvents.h \
- tlFixedVector.h \
- tlGlobPattern.h \
- tlHeap.h \
- tlHttpStream.h \
- tlInternational.h \
- tlIntervalMap.h \
- tlIntervalSet.h \
- tlKDTree.h \
- tlLog.h \
- tlObject.h \
- tlObjectCollection.h \
- tlProgress.h \
- tlReuseVector.h \
- tlScriptError.h \
- tlStableVector.h \
- tlStaticObjects.h \
- tlStream.h \
- tlString.h \
- tlSystemPaths.h \
- tlThreadedWorkers.h \
- tlTimer.h \
- tlTypeTraits.h \
- tlUtils.h \
- tlVariant.h \
- tlVariantUserClasses.h \
- tlVector.h \
- tlXMLParser.h \
- tlXMLWriter.h \
- tlFileSystemWatcher.h \
- tlCommon.h \
- tlMath.h \
- tlCpp.h \
- tlFileUtils.h \
- tlWebDAV.h \
- tlArch.h \
- tlCommandLineParser.h
-
-INCLUDEPATH =
-DEPENDPATH =
+unit_tests.depends += tl
diff --git a/src/tl/PasswordDialog.ui b/src/tl/tl/PasswordDialog.ui
similarity index 100%
rename from src/tl/PasswordDialog.ui
rename to src/tl/tl/PasswordDialog.ui
diff --git a/src/tl/tl/tl.pro b/src/tl/tl/tl.pro
new file mode 100644
index 000000000..5e3cb0e0b
--- /dev/null
+++ b/src/tl/tl/tl.pro
@@ -0,0 +1,97 @@
+
+DESTDIR = $$OUT_PWD/../..
+TARGET = klayout_tl
+
+include($$PWD/../../lib.pri)
+
+DEFINES += MAKE_TL_LIBRARY
+
+LIBS += -lz
+
+FORMS = \
+ PasswordDialog.ui
+
+SOURCES = \
+ tlAssert.cc \
+ tlClassRegistry.cc \
+ tlDataMapping.cc \
+ tlDeferredExecution.cc \
+ tlDeflate.cc \
+ tlException.cc \
+ tlExceptions.cc \
+ tlExpression.cc \
+ tlEvents.cc \
+ tlGlobPattern.cc \
+ tlHeap.cc \
+ tlHttpStream.cc \
+ tlInternational.cc \
+ tlLog.cc \
+ tlObject.cc \
+ tlProgress.cc \
+ tlScriptError.cc \
+ tlStaticObjects.cc \
+ tlStream.cc \
+ tlString.cc \
+ tlSystemPaths.cc \
+ tlThreadedWorkers.cc \
+ tlTimer.cc \
+ tlVariant.cc \
+ tlXMLParser.cc \
+ tlXMLWriter.cc \
+ tlFileSystemWatcher.cc \
+ tlFileUtils.cc \
+ tlWebDAV.cc \
+ tlArch.cc \
+ tlCommandLineParser.cc
+
+HEADERS = \
+ tlAlgorithm.h \
+ tlAssert.h \
+ tlClassRegistry.h \
+ tlDataMapping.h \
+ tlDeferredExecution.h \
+ tlDeflate.h \
+ tlException.h \
+ tlExceptions.h \
+ tlExpression.h \
+ tlEvents.h \
+ tlFixedVector.h \
+ tlGlobPattern.h \
+ tlHeap.h \
+ tlHttpStream.h \
+ tlInternational.h \
+ tlIntervalMap.h \
+ tlIntervalSet.h \
+ tlKDTree.h \
+ tlLog.h \
+ tlObject.h \
+ tlObjectCollection.h \
+ tlProgress.h \
+ tlReuseVector.h \
+ tlScriptError.h \
+ tlStableVector.h \
+ tlStaticObjects.h \
+ tlStream.h \
+ tlString.h \
+ tlSystemPaths.h \
+ tlThreadedWorkers.h \
+ tlTimer.h \
+ tlTypeTraits.h \
+ tlUtils.h \
+ tlVariant.h \
+ tlVariantUserClasses.h \
+ tlVector.h \
+ tlXMLParser.h \
+ tlXMLWriter.h \
+ tlFileSystemWatcher.h \
+ tlCommon.h \
+ tlMath.h \
+ tlCpp.h \
+ tlFileUtils.h \
+ tlWebDAV.h \
+ tlArch.h \
+ tlCommandLineParser.h
+
+INCLUDEPATH =
+DEPENDPATH =
+
diff --git a/src/tl/tlAlgorithm.h b/src/tl/tl/tlAlgorithm.h
similarity index 100%
rename from src/tl/tlAlgorithm.h
rename to src/tl/tl/tlAlgorithm.h
diff --git a/src/tl/tlArch.cc b/src/tl/tl/tlArch.cc
similarity index 100%
rename from src/tl/tlArch.cc
rename to src/tl/tl/tlArch.cc
diff --git a/src/tl/tlArch.h b/src/tl/tl/tlArch.h
similarity index 100%
rename from src/tl/tlArch.h
rename to src/tl/tl/tlArch.h
diff --git a/src/tl/tlAssert.cc b/src/tl/tl/tlAssert.cc
similarity index 100%
rename from src/tl/tlAssert.cc
rename to src/tl/tl/tlAssert.cc
diff --git a/src/tl/tlAssert.h b/src/tl/tl/tlAssert.h
similarity index 100%
rename from src/tl/tlAssert.h
rename to src/tl/tl/tlAssert.h
diff --git a/src/tl/tlClassRegistry.cc b/src/tl/tl/tlClassRegistry.cc
similarity index 100%
rename from src/tl/tlClassRegistry.cc
rename to src/tl/tl/tlClassRegistry.cc
diff --git a/src/tl/tlClassRegistry.h b/src/tl/tl/tlClassRegistry.h
similarity index 100%
rename from src/tl/tlClassRegistry.h
rename to src/tl/tl/tlClassRegistry.h
diff --git a/src/tl/tlCommandLineParser.cc b/src/tl/tl/tlCommandLineParser.cc
similarity index 97%
rename from src/tl/tlCommandLineParser.cc
rename to src/tl/tl/tlCommandLineParser.cc
index 6bdc20f38..631207a27 100644
--- a/src/tl/tlCommandLineParser.cc
+++ b/src/tl/tl/tlCommandLineParser.cc
@@ -322,16 +322,6 @@ print_string_formatted (const std::string &indent, unsigned int columns, const s
tl::info << "";
}
-static std::string
-pad_string (unsigned int columns, const std::string &text)
-{
- std::string s = text;
- while (s.size () < size_t (columns)) {
- s += " ";
- }
- return s;
-}
-
struct NameCompare
{
bool operator() (ArgBase *a, ArgBase *b)
@@ -395,7 +385,7 @@ CommandLineOptions::produce_help (const std::string &program_name, bool advanced
if ((*a)->option ().optional) {
n += " (optional)";
}
- tl::info << " " << pad_string (arg_width + 4, n) << (*a)->brief_doc ();
+ tl::info << " " << pad_string_right (arg_width + 4, n) << (*a)->brief_doc ();
tl::info << "";
if (! (*a)->long_doc ().empty ()) {
@@ -442,7 +432,7 @@ CommandLineOptions::produce_help (const std::string &program_name, bool advanced
}
tl::info << " "
- << pad_string (arg_width + 4, (*a)->option_desc ())
+ << pad_string_right (arg_width + 4, (*a)->option_desc ())
<< (*a)->brief_doc ();
tl::info << "";
diff --git a/src/tl/tlCommandLineParser.h b/src/tl/tl/tlCommandLineParser.h
similarity index 100%
rename from src/tl/tlCommandLineParser.h
rename to src/tl/tl/tlCommandLineParser.h
diff --git a/src/tl/tlCommon.h b/src/tl/tl/tlCommon.h
similarity index 100%
rename from src/tl/tlCommon.h
rename to src/tl/tl/tlCommon.h
diff --git a/src/tl/tlCpp.h b/src/tl/tl/tlCpp.h
similarity index 100%
rename from src/tl/tlCpp.h
rename to src/tl/tl/tlCpp.h
diff --git a/src/tl/tlDataMapping.cc b/src/tl/tl/tlDataMapping.cc
similarity index 100%
rename from src/tl/tlDataMapping.cc
rename to src/tl/tl/tlDataMapping.cc
diff --git a/src/tl/tlDataMapping.h b/src/tl/tl/tlDataMapping.h
similarity index 100%
rename from src/tl/tlDataMapping.h
rename to src/tl/tl/tlDataMapping.h
diff --git a/src/tl/tlDeferredExecution.cc b/src/tl/tl/tlDeferredExecution.cc
similarity index 100%
rename from src/tl/tlDeferredExecution.cc
rename to src/tl/tl/tlDeferredExecution.cc
diff --git a/src/tl/tlDeferredExecution.h b/src/tl/tl/tlDeferredExecution.h
similarity index 100%
rename from src/tl/tlDeferredExecution.h
rename to src/tl/tl/tlDeferredExecution.h
diff --git a/src/tl/tlDeflate.cc b/src/tl/tl/tlDeflate.cc
similarity index 100%
rename from src/tl/tlDeflate.cc
rename to src/tl/tl/tlDeflate.cc
diff --git a/src/tl/tlDeflate.h b/src/tl/tl/tlDeflate.h
similarity index 100%
rename from src/tl/tlDeflate.h
rename to src/tl/tl/tlDeflate.h
diff --git a/src/tl/tlEvents.cc b/src/tl/tl/tlEvents.cc
similarity index 100%
rename from src/tl/tlEvents.cc
rename to src/tl/tl/tlEvents.cc
diff --git a/src/tl/tlEvents.h b/src/tl/tl/tlEvents.h
similarity index 100%
rename from src/tl/tlEvents.h
rename to src/tl/tl/tlEvents.h
diff --git a/src/tl/tlEventsVar.h b/src/tl/tl/tlEventsVar.h
similarity index 100%
rename from src/tl/tlEventsVar.h
rename to src/tl/tl/tlEventsVar.h
diff --git a/src/tl/tlException.cc b/src/tl/tl/tlException.cc
similarity index 100%
rename from src/tl/tlException.cc
rename to src/tl/tl/tlException.cc
diff --git a/src/tl/tlException.h b/src/tl/tl/tlException.h
similarity index 100%
rename from src/tl/tlException.h
rename to src/tl/tl/tlException.h
diff --git a/src/tl/tlExceptions.cc b/src/tl/tl/tlExceptions.cc
similarity index 100%
rename from src/tl/tlExceptions.cc
rename to src/tl/tl/tlExceptions.cc
diff --git a/src/tl/tlExceptions.h b/src/tl/tl/tlExceptions.h
similarity index 100%
rename from src/tl/tlExceptions.h
rename to src/tl/tl/tlExceptions.h
diff --git a/src/tl/tlExpression.cc b/src/tl/tl/tlExpression.cc
similarity index 100%
rename from src/tl/tlExpression.cc
rename to src/tl/tl/tlExpression.cc
diff --git a/src/tl/tlExpression.h b/src/tl/tl/tlExpression.h
similarity index 100%
rename from src/tl/tlExpression.h
rename to src/tl/tl/tlExpression.h
diff --git a/src/tl/tlFileSystemWatcher.cc b/src/tl/tl/tlFileSystemWatcher.cc
similarity index 100%
rename from src/tl/tlFileSystemWatcher.cc
rename to src/tl/tl/tlFileSystemWatcher.cc
diff --git a/src/tl/tlFileSystemWatcher.h b/src/tl/tl/tlFileSystemWatcher.h
similarity index 100%
rename from src/tl/tlFileSystemWatcher.h
rename to src/tl/tl/tlFileSystemWatcher.h
diff --git a/src/tl/tlFileUtils.cc b/src/tl/tl/tlFileUtils.cc
similarity index 100%
rename from src/tl/tlFileUtils.cc
rename to src/tl/tl/tlFileUtils.cc
diff --git a/src/tl/tlFileUtils.h b/src/tl/tl/tlFileUtils.h
similarity index 100%
rename from src/tl/tlFileUtils.h
rename to src/tl/tl/tlFileUtils.h
diff --git a/src/tl/tlFixedVector.h b/src/tl/tl/tlFixedVector.h
similarity index 100%
rename from src/tl/tlFixedVector.h
rename to src/tl/tl/tlFixedVector.h
diff --git a/src/tl/tlGlobPattern.cc b/src/tl/tl/tlGlobPattern.cc
similarity index 100%
rename from src/tl/tlGlobPattern.cc
rename to src/tl/tl/tlGlobPattern.cc
diff --git a/src/tl/tlGlobPattern.h b/src/tl/tl/tlGlobPattern.h
similarity index 100%
rename from src/tl/tlGlobPattern.h
rename to src/tl/tl/tlGlobPattern.h
diff --git a/src/tl/tlHeap.cc b/src/tl/tl/tlHeap.cc
similarity index 100%
rename from src/tl/tlHeap.cc
rename to src/tl/tl/tlHeap.cc
diff --git a/src/tl/tlHeap.h b/src/tl/tl/tlHeap.h
similarity index 100%
rename from src/tl/tlHeap.h
rename to src/tl/tl/tlHeap.h
diff --git a/src/tl/tlHttpStream.cc b/src/tl/tl/tlHttpStream.cc
similarity index 100%
rename from src/tl/tlHttpStream.cc
rename to src/tl/tl/tlHttpStream.cc
diff --git a/src/tl/tlHttpStream.h b/src/tl/tl/tlHttpStream.h
similarity index 100%
rename from src/tl/tlHttpStream.h
rename to src/tl/tl/tlHttpStream.h
diff --git a/src/tl/tlInternational.cc b/src/tl/tl/tlInternational.cc
similarity index 100%
rename from src/tl/tlInternational.cc
rename to src/tl/tl/tlInternational.cc
diff --git a/src/tl/tlInternational.h b/src/tl/tl/tlInternational.h
similarity index 100%
rename from src/tl/tlInternational.h
rename to src/tl/tl/tlInternational.h
diff --git a/src/tl/tlIntervalMap.h b/src/tl/tl/tlIntervalMap.h
similarity index 100%
rename from src/tl/tlIntervalMap.h
rename to src/tl/tl/tlIntervalMap.h
diff --git a/src/tl/tlIntervalSet.h b/src/tl/tl/tlIntervalSet.h
similarity index 100%
rename from src/tl/tlIntervalSet.h
rename to src/tl/tl/tlIntervalSet.h
diff --git a/src/tl/tlKDTree.h b/src/tl/tl/tlKDTree.h
similarity index 100%
rename from src/tl/tlKDTree.h
rename to src/tl/tl/tlKDTree.h
diff --git a/src/tl/tlLog.cc b/src/tl/tl/tlLog.cc
similarity index 100%
rename from src/tl/tlLog.cc
rename to src/tl/tl/tlLog.cc
diff --git a/src/tl/tlLog.h b/src/tl/tl/tlLog.h
similarity index 100%
rename from src/tl/tlLog.h
rename to src/tl/tl/tlLog.h
diff --git a/src/tl/tlMath.h b/src/tl/tl/tlMath.h
similarity index 100%
rename from src/tl/tlMath.h
rename to src/tl/tl/tlMath.h
diff --git a/src/tl/tlObject.cc b/src/tl/tl/tlObject.cc
similarity index 100%
rename from src/tl/tlObject.cc
rename to src/tl/tl/tlObject.cc
diff --git a/src/tl/tlObject.h b/src/tl/tl/tlObject.h
similarity index 100%
rename from src/tl/tlObject.h
rename to src/tl/tl/tlObject.h
diff --git a/src/tl/tlObjectCollection.h b/src/tl/tl/tlObjectCollection.h
similarity index 100%
rename from src/tl/tlObjectCollection.h
rename to src/tl/tl/tlObjectCollection.h
diff --git a/src/tl/tlProgress.cc b/src/tl/tl/tlProgress.cc
similarity index 100%
rename from src/tl/tlProgress.cc
rename to src/tl/tl/tlProgress.cc
diff --git a/src/tl/tlProgress.h b/src/tl/tl/tlProgress.h
similarity index 100%
rename from src/tl/tlProgress.h
rename to src/tl/tl/tlProgress.h
diff --git a/src/tl/tlReuseVector.h b/src/tl/tl/tlReuseVector.h
similarity index 100%
rename from src/tl/tlReuseVector.h
rename to src/tl/tl/tlReuseVector.h
diff --git a/src/tl/tlScriptError.cc b/src/tl/tl/tlScriptError.cc
similarity index 100%
rename from src/tl/tlScriptError.cc
rename to src/tl/tl/tlScriptError.cc
diff --git a/src/tl/tlScriptError.h b/src/tl/tl/tlScriptError.h
similarity index 100%
rename from src/tl/tlScriptError.h
rename to src/tl/tl/tlScriptError.h
diff --git a/src/tl/tlStableVector.h b/src/tl/tl/tlStableVector.h
similarity index 100%
rename from src/tl/tlStableVector.h
rename to src/tl/tl/tlStableVector.h
diff --git a/src/tl/tlStaticObjects.cc b/src/tl/tl/tlStaticObjects.cc
similarity index 100%
rename from src/tl/tlStaticObjects.cc
rename to src/tl/tl/tlStaticObjects.cc
diff --git a/src/tl/tlStaticObjects.h b/src/tl/tl/tlStaticObjects.h
similarity index 100%
rename from src/tl/tlStaticObjects.h
rename to src/tl/tl/tlStaticObjects.h
diff --git a/src/tl/tlStream.cc b/src/tl/tl/tlStream.cc
similarity index 100%
rename from src/tl/tlStream.cc
rename to src/tl/tl/tlStream.cc
diff --git a/src/tl/tlStream.h b/src/tl/tl/tlStream.h
similarity index 100%
rename from src/tl/tlStream.h
rename to src/tl/tl/tlStream.h
diff --git a/src/tl/tlString.cc b/src/tl/tl/tlString.cc
similarity index 96%
rename from src/tl/tlString.cc
rename to src/tl/tl/tlString.cc
index 22d05402f..e38ed8a33 100644
--- a/src/tl/tlString.cc
+++ b/src/tl/tl/tlString.cc
@@ -423,6 +423,8 @@ tl::escape_to_html (std::string &out, const std::string &in, bool replace_newlin
out += ">";
} else if (*cp == '&') {
out += "&";
+ } else if (*cp == '\"') {
+ out += """;
} else if (replace_newlines && *cp == '\n') {
out += "
";
} else {
@@ -439,6 +441,71 @@ tl::escaped_to_html (const std::string &in, bool replace_newlines)
return s;
}
+std::string
+tl::replicate (const std::string &s, unsigned int n)
+{
+ if (n == 0) {
+ return std::string ();
+ }
+
+ std::string res;
+ res.reserve (s.size () * n);
+ while (n > 0) {
+ res += s;
+ --n;
+ }
+ return res;
+}
+
+std::string
+tl::pad_string_right (unsigned int columns, const std::string &text)
+{
+ std::string s = text;
+ s.reserve (columns);
+ while (s.size () < size_t (columns)) {
+ s += " ";
+ }
+ return s;
+}
+
+std::string
+tl::pad_string_left (unsigned int columns, const std::string &text)
+{
+ std::string s;
+ s.reserve (columns);
+ while (s.size () + text.size () < size_t (columns)) {
+ s += " ";
+ }
+ s += text;
+ return s;
+}
+
+std::string
+tl::replaced (const std::string &subject, const std::string &before, const std::string &after)
+{
+ if (before.empty ()) {
+ return subject;
+ }
+
+ std::string s;
+
+ std::string::size_type pos;
+ std::string::size_type last = 0;
+ while ((pos = subject.find (before, last)) != std::string::npos) {
+ if (pos > last) {
+ s += std::string (subject, last, pos - last);
+ }
+ s += after;
+ last = pos + before.size ();
+ }
+
+ if (last < subject.size ()) {
+ s += std::string (subject, last, subject.size () - last);
+ }
+
+ return s;
+}
+
void
tl::from_string (const std::string &s, const char * &result)
{
diff --git a/src/tl/tlString.h b/src/tl/tl/tlString.h
similarity index 96%
rename from src/tl/tlString.h
rename to src/tl/tl/tlString.h
index 6840a7fba..00a74537f 100644
--- a/src/tl/tlString.h
+++ b/src/tl/tl/tlString.h
@@ -334,10 +334,33 @@ TL_PUBLIC void escape_to_html (std::string &out, const std::string &in, bool rep
/**
* @brief Escapes HTML (or XML) characters from in and returns the resulting string
+ * Double quotes are substituted by """ which makes the resulting string usable for
+ * attributes (in double quotes) too.
* If "replace_newlines" is true, "\n" will be replaced by "
".
*/
TL_PUBLIC std::string escaped_to_html (const std::string &in, bool replace_newlines = true);
+/**
+ * @brief Replaces the "before" string by "after" in the "subject" string and returns the new string
+ * All occurances are replaced.
+ */
+TL_PUBLIC std::string replaced (const std::string &subject, const std::string &before, const std::string &after);
+
+/**
+ * @brief Replicates the given string n times
+ */
+TL_PUBLIC std::string replicate (const std::string &s, unsigned int n);
+
+/**
+ * @brief Fills the string (to the right) with blanks until the desired length is reached
+ */
+TL_PUBLIC std::string pad_string_right (unsigned int n, const std::string &s);
+
+/**
+ * @brief Fills the string (to the left) with blanks until the desired length is reached
+ */
+TL_PUBLIC std::string pad_string_left (unsigned int n, const std::string &s);
+
/**
* @brief Set the number of digits resolution for a micron display
*/
diff --git a/src/tl/tlSystemPaths.cc b/src/tl/tl/tlSystemPaths.cc
similarity index 100%
rename from src/tl/tlSystemPaths.cc
rename to src/tl/tl/tlSystemPaths.cc
diff --git a/src/tl/tlSystemPaths.h b/src/tl/tl/tlSystemPaths.h
similarity index 100%
rename from src/tl/tlSystemPaths.h
rename to src/tl/tl/tlSystemPaths.h
diff --git a/src/tl/tlThreadedWorkers.cc b/src/tl/tl/tlThreadedWorkers.cc
similarity index 100%
rename from src/tl/tlThreadedWorkers.cc
rename to src/tl/tl/tlThreadedWorkers.cc
diff --git a/src/tl/tlThreadedWorkers.h b/src/tl/tl/tlThreadedWorkers.h
similarity index 100%
rename from src/tl/tlThreadedWorkers.h
rename to src/tl/tl/tlThreadedWorkers.h
diff --git a/src/tl/tlTimer.cc b/src/tl/tl/tlTimer.cc
similarity index 100%
rename from src/tl/tlTimer.cc
rename to src/tl/tl/tlTimer.cc
diff --git a/src/tl/tlTimer.h b/src/tl/tl/tlTimer.h
similarity index 100%
rename from src/tl/tlTimer.h
rename to src/tl/tl/tlTimer.h
diff --git a/src/tl/tlTypeTraits.h b/src/tl/tl/tlTypeTraits.h
similarity index 100%
rename from src/tl/tlTypeTraits.h
rename to src/tl/tl/tlTypeTraits.h
diff --git a/src/tl/tlUtils.h b/src/tl/tl/tlUtils.h
similarity index 100%
rename from src/tl/tlUtils.h
rename to src/tl/tl/tlUtils.h
diff --git a/src/tl/tlVariant.cc b/src/tl/tl/tlVariant.cc
similarity index 100%
rename from src/tl/tlVariant.cc
rename to src/tl/tl/tlVariant.cc
diff --git a/src/tl/tlVariant.h b/src/tl/tl/tlVariant.h
similarity index 100%
rename from src/tl/tlVariant.h
rename to src/tl/tl/tlVariant.h
diff --git a/src/tl/tlVariantUserClasses.h b/src/tl/tl/tlVariantUserClasses.h
similarity index 100%
rename from src/tl/tlVariantUserClasses.h
rename to src/tl/tl/tlVariantUserClasses.h
diff --git a/src/tl/tlVector.h b/src/tl/tl/tlVector.h
similarity index 100%
rename from src/tl/tlVector.h
rename to src/tl/tl/tlVector.h
diff --git a/src/tl/tlWebDAV.cc b/src/tl/tl/tlWebDAV.cc
similarity index 100%
rename from src/tl/tlWebDAV.cc
rename to src/tl/tl/tlWebDAV.cc
diff --git a/src/tl/tlWebDAV.h b/src/tl/tl/tlWebDAV.h
similarity index 100%
rename from src/tl/tlWebDAV.h
rename to src/tl/tl/tlWebDAV.h
diff --git a/src/tl/tlXMLParser.cc b/src/tl/tl/tlXMLParser.cc
similarity index 100%
rename from src/tl/tlXMLParser.cc
rename to src/tl/tl/tlXMLParser.cc
diff --git a/src/tl/tlXMLParser.h b/src/tl/tl/tlXMLParser.h
similarity index 100%
rename from src/tl/tlXMLParser.h
rename to src/tl/tl/tlXMLParser.h
diff --git a/src/tl/tlXMLWriter.cc b/src/tl/tl/tlXMLWriter.cc
similarity index 100%
rename from src/tl/tlXMLWriter.cc
rename to src/tl/tl/tlXMLWriter.cc
diff --git a/src/tl/tlXMLWriter.h b/src/tl/tl/tlXMLWriter.h
similarity index 100%
rename from src/tl/tlXMLWriter.h
rename to src/tl/tl/tlXMLWriter.h
diff --git a/src/unit_tests/tlAlgorithm.cc b/src/tl/unit_tests/tlAlgorithm.cc
similarity index 100%
rename from src/unit_tests/tlAlgorithm.cc
rename to src/tl/unit_tests/tlAlgorithm.cc
diff --git a/src/unit_tests/tlClassRegistry.cc b/src/tl/unit_tests/tlClassRegistry.cc
similarity index 100%
rename from src/unit_tests/tlClassRegistry.cc
rename to src/tl/unit_tests/tlClassRegistry.cc
diff --git a/src/unit_tests/tlCommandLineParser.cc b/src/tl/unit_tests/tlCommandLineParser.cc
similarity index 100%
rename from src/unit_tests/tlCommandLineParser.cc
rename to src/tl/unit_tests/tlCommandLineParser.cc
diff --git a/src/unit_tests/tlDataMapping.cc b/src/tl/unit_tests/tlDataMapping.cc
similarity index 100%
rename from src/unit_tests/tlDataMapping.cc
rename to src/tl/unit_tests/tlDataMapping.cc
diff --git a/src/unit_tests/tlDeferredExecution.cc b/src/tl/unit_tests/tlDeferredExecution.cc
similarity index 100%
rename from src/unit_tests/tlDeferredExecution.cc
rename to src/tl/unit_tests/tlDeferredExecution.cc
diff --git a/src/unit_tests/tlDeflate.cc b/src/tl/unit_tests/tlDeflate.cc
similarity index 100%
rename from src/unit_tests/tlDeflate.cc
rename to src/tl/unit_tests/tlDeflate.cc
diff --git a/src/unit_tests/tlEvents.cc b/src/tl/unit_tests/tlEvents.cc
similarity index 100%
rename from src/unit_tests/tlEvents.cc
rename to src/tl/unit_tests/tlEvents.cc
diff --git a/src/unit_tests/tlExpression.cc b/src/tl/unit_tests/tlExpression.cc
similarity index 100%
rename from src/unit_tests/tlExpression.cc
rename to src/tl/unit_tests/tlExpression.cc
diff --git a/src/unit_tests/tlFileSystemWatcher.cc b/src/tl/unit_tests/tlFileSystemWatcher.cc
similarity index 100%
rename from src/unit_tests/tlFileSystemWatcher.cc
rename to src/tl/unit_tests/tlFileSystemWatcher.cc
diff --git a/src/unit_tests/tlFileUtils.cc b/src/tl/unit_tests/tlFileUtils.cc
similarity index 100%
rename from src/unit_tests/tlFileUtils.cc
rename to src/tl/unit_tests/tlFileUtils.cc
diff --git a/src/unit_tests/tlGlobPattern.cc b/src/tl/unit_tests/tlGlobPattern.cc
similarity index 100%
rename from src/unit_tests/tlGlobPattern.cc
rename to src/tl/unit_tests/tlGlobPattern.cc
diff --git a/src/unit_tests/tlHttpStream.cc b/src/tl/unit_tests/tlHttpStream.cc
similarity index 100%
rename from src/unit_tests/tlHttpStream.cc
rename to src/tl/unit_tests/tlHttpStream.cc
diff --git a/src/unit_tests/tlIntervalMap.cc b/src/tl/unit_tests/tlIntervalMap.cc
similarity index 100%
rename from src/unit_tests/tlIntervalMap.cc
rename to src/tl/unit_tests/tlIntervalMap.cc
diff --git a/src/unit_tests/tlIntervalSet.cc b/src/tl/unit_tests/tlIntervalSet.cc
similarity index 100%
rename from src/unit_tests/tlIntervalSet.cc
rename to src/tl/unit_tests/tlIntervalSet.cc
diff --git a/src/unit_tests/tlKDTree.cc b/src/tl/unit_tests/tlKDTree.cc
similarity index 100%
rename from src/unit_tests/tlKDTree.cc
rename to src/tl/unit_tests/tlKDTree.cc
diff --git a/src/unit_tests/tlMath.cc b/src/tl/unit_tests/tlMath.cc
similarity index 100%
rename from src/unit_tests/tlMath.cc
rename to src/tl/unit_tests/tlMath.cc
diff --git a/src/unit_tests/tlObject.cc b/src/tl/unit_tests/tlObject.cc
similarity index 100%
rename from src/unit_tests/tlObject.cc
rename to src/tl/unit_tests/tlObject.cc
diff --git a/src/unit_tests/tlReuseVector.cc b/src/tl/unit_tests/tlReuseVector.cc
similarity index 100%
rename from src/unit_tests/tlReuseVector.cc
rename to src/tl/unit_tests/tlReuseVector.cc
diff --git a/src/unit_tests/tlStableVector.cc b/src/tl/unit_tests/tlStableVector.cc
similarity index 100%
rename from src/unit_tests/tlStableVector.cc
rename to src/tl/unit_tests/tlStableVector.cc
diff --git a/src/unit_tests/tlString.cc b/src/tl/unit_tests/tlString.cc
similarity index 89%
rename from src/unit_tests/tlString.cc
rename to src/tl/unit_tests/tlString.cc
index 6b0ad38ac..60ff6b6ef 100644
--- a/src/unit_tests/tlString.cc
+++ b/src/tl/unit_tests/tlString.cc
@@ -436,7 +436,46 @@ TEST(11)
s = std::string ();
tl::escape_to_html (s, "a\nb", false);
EXPECT_EQ (s, "a\nb");
- EXPECT_EQ (tl::escaped_to_html ("x<&>"), "x<&>");
+ EXPECT_EQ (tl::escaped_to_html ("x<&>\""), "x<&>"");
EXPECT_EQ (tl::escaped_to_html ("a\nb"), "a
b");
EXPECT_EQ (tl::escaped_to_html ("a\nb", false), "a\nb");
}
+
+TEST(12)
+{
+ EXPECT_EQ (replaced ("abc", "b", "xy"), "axyc");
+ EXPECT_EQ (replaced ("ab", "b", "xy"), "axy");
+ EXPECT_EQ (replaced ("bc", "b", "xy"), "xyc");
+ EXPECT_EQ (replaced ("b", "b", "xy"), "xy");
+ EXPECT_EQ (replaced ("bbbb", "b", "xy"), "xyxyxyxy");
+ EXPECT_EQ (replaced ("", "b", "xy"), "");
+ EXPECT_EQ (replaced ("ac", "b", "xy"), "ac");
+ EXPECT_EQ (replaced ("abc", "b", ""), "ac");
+ EXPECT_EQ (replaced ("bb", "b", ""), "");
+ EXPECT_EQ (replaced ("bb", "bbb", ""), "bb");
+ EXPECT_EQ (replaced ("abbbc", "bbb", "xy"), "axyc");
+ EXPECT_EQ (replaced ("abbbbbbc", "bbb", "xy"), "axyxyc");
+ EXPECT_EQ (replaced ("abbbbbbbc", "bbb", "xy"), "axyxybc");
+}
+
+TEST(13)
+{
+ EXPECT_EQ (replicate ("abc", 0), "");
+ EXPECT_EQ (replicate ("abc", 1), "abc");
+ EXPECT_EQ (replicate ("abc", 2), "abcabc");
+ EXPECT_EQ (replicate ("", 2), "");
+}
+
+TEST(14)
+{
+ EXPECT_EQ (pad_string_right (0, "abc"), "abc");
+ EXPECT_EQ (pad_string_right (2, "abc"), "abc");
+ EXPECT_EQ (pad_string_right (4, "abc"), "abc ");
+ EXPECT_EQ (pad_string_right (6, "abc"), "abc ");
+ EXPECT_EQ (pad_string_right (4, ""), " ");
+ EXPECT_EQ (pad_string_left (0, "abc"), "abc");
+ EXPECT_EQ (pad_string_left (2, "abc"), "abc");
+ EXPECT_EQ (pad_string_left (4, "abc"), " abc");
+ EXPECT_EQ (pad_string_left (6, "abc"), " abc");
+ EXPECT_EQ (pad_string_left (4, ""), " ");
+}
diff --git a/src/unit_tests/tlThreadedWorkers.cc b/src/tl/unit_tests/tlThreadedWorkers.cc
similarity index 100%
rename from src/unit_tests/tlThreadedWorkers.cc
rename to src/tl/unit_tests/tlThreadedWorkers.cc
diff --git a/src/unit_tests/tlUtils.cc b/src/tl/unit_tests/tlUtils.cc
similarity index 100%
rename from src/unit_tests/tlUtils.cc
rename to src/tl/unit_tests/tlUtils.cc
diff --git a/src/unit_tests/tlVariant.cc b/src/tl/unit_tests/tlVariant.cc
similarity index 100%
rename from src/unit_tests/tlVariant.cc
rename to src/tl/unit_tests/tlVariant.cc
diff --git a/src/unit_tests/tlWebDAV.cc b/src/tl/unit_tests/tlWebDAV.cc
similarity index 100%
rename from src/unit_tests/tlWebDAV.cc
rename to src/tl/unit_tests/tlWebDAV.cc
diff --git a/src/unit_tests/tlXMLParser.cc b/src/tl/unit_tests/tlXMLParser.cc
similarity index 100%
rename from src/unit_tests/tlXMLParser.cc
rename to src/tl/unit_tests/tlXMLParser.cc
diff --git a/src/tl/unit_tests/unit_tests.pro b/src/tl/unit_tests/unit_tests.pro
new file mode 100644
index 000000000..4d74a71e9
--- /dev/null
+++ b/src/tl/unit_tests/unit_tests.pro
@@ -0,0 +1,44 @@
+
+DESTDIR_UT = $$OUT_PWD/../..
+DESTDIR = $$OUT_PWD/..
+
+TARGET = tl_tests
+
+include($$PWD/../../lib_ut.pri)
+
+SOURCES = \
+ tlAlgorithm.cc \
+ tlClassRegistry.cc \
+ tlCommandLineParser.cc \
+ tlDataMapping.cc \
+ tlDeferredExecution.cc \
+ tlDeflate.cc \
+ tlEvents.cc \
+ tlExpression.cc \
+ tlFileSystemWatcher.cc \
+ tlFileUtils.cc \
+ tlGlobPattern.cc \
+ tlHttpStream.cc \
+ tlIntervalMap.cc \
+ tlIntervalSet.cc \
+ tlKDTree.cc \
+ tlMath.cc \
+ tlObject.cc \
+ tlReuseVector.cc \
+ tlStableVector.cc \
+ tlString.cc \
+ tlThreadedWorkers.cc \
+ tlUtils.cc \
+ tlVariant.cc \
+ tlWebDAV.cc \
+ tlXMLParser.cc \
+
+INCLUDEPATH += $$TL_INC $$GSI_INC $$UT_INC
+DEPENDPATH += $$TL_INC $$GSI_INC $$UT_INC
+
+# because of db types support in ut:
+INCLUDEPATH += $$DB_INC
+DEPENDPATH += $$DB_INC
+
+LIBS += -L$$DESTDIR_UT -lklayout_db -lklayout_tl -lklayout_gsi -lklayout_ut
+
diff --git a/src/unit_tests/unit_tests.pro b/src/unit_tests/unit_tests.pro
index 39a3820a2..344729494 100644
--- a/src/unit_tests/unit_tests.pro
+++ b/src/unit_tests/unit_tests.pro
@@ -12,59 +12,8 @@ HEADERS = \
gsiTest.h
SOURCES = \
- dbArray.cc \
- dbBox.cc \
- dbBoxScanner.cc \
- dbBoxTree.cc \
- dbCell.cc \
- dbCellGraphUtils.cc \
- dbCellHullGenerator.cc \
- dbCellMapping.cc \
- dbCIFReader.cc \
- dbClip.cc \
- dbDXFReader.cc \
- dbEdge.cc \
- dbEdgePair.cc \
- dbEdgePairRelations.cc \
- dbEdgePairs.cc \
- dbEdgeProcessor.cc \
- dbEdges.cc \
- dbEdgesToContours.cc \
- dbGDS2Reader.cc \
- dbGDS2Writer.cc \
- dbLayer.cc \
- dbLayerMapping.cc \
- dbLayout.cc \
- dbLayoutDiff.cc \
- dbLayoutQuery.cc \
- dbLibraries.cc \
- dbMatrix.cc \
- dbOASISReader.cc \
- dbOASISWriter.cc \
- dbOASISWriter2.cc \
- dbObject.cc \
- dbPath.cc \
- dbPCells.cc \
- dbPoint.cc \
- dbPolygon.cc \
- dbPolygonTools.cc \
- dbPropertiesRepository.cc \
- dbRecursiveShapeIterator.cc \
- dbRegion.cc \
- dbShape.cc \
- dbShapeArray.cc \
- dbShapeRepository.cc \
- dbShapes.cc \
- dbStreamLayers.cc \
- dbText.cc \
- dbTilingProcessor.cc \
- dbTrans.cc \
- dbVector.cc \
- dbWriterTools.cc \
- extGerberImport.cc \
- extLEFDEFImport.cc \
- extNetTracer.cc \
gsiExpression.cc \
+ gsiTest.cc \
imgObject.cc \
layAnnotationShapes.cc \
layBitmap.cc \
@@ -72,37 +21,11 @@ SOURCES = \
layLayerProperties.cc \
layParsedLayerSource.cc \
layRenderer.cc \
+ laySalt.cc \
+ laySnap.cc \
pya.cc \
rba.cc \
rdb.cc \
- tlAlgorithm.cc \
- tlClassRegistry.cc \
- tlDataMapping.cc \
- tlDeferredExecution.cc \
- tlDeflate.cc \
- tlExpression.cc \
- tlEvents.cc \
- tlGlobPattern.cc \
- tlIntervalMap.cc \
- tlIntervalSet.cc \
- tlKDTree.cc \
- tlObject.cc \
- tlReuseVector.cc \
- tlStableVector.cc \
- tlString.cc \
- tlThreadedWorkers.cc \
- tlUtils.cc \
- tlVariant.cc \
- tlXMLParser.cc \
- gsiTest.cc \
- tlFileSystemWatcher.cc \
- tlMath.cc \
- laySalt.cc \
- tlFileUtils.cc \
- tlHttpStream.cc \
- tlWebDAV.cc \
- laySnap.cc \
- tlCommandLineParser.cc
# main components:
SOURCES += \
diff --git a/src/ut/utMain.cc b/src/ut/utMain.cc
index ba6aa4fa6..489c643f2 100644
--- a/src/ut/utMain.cc
+++ b/src/ut/utMain.cc
@@ -45,39 +45,6 @@
namespace ut
{
-// TODO: move this to tlString.h
-static std::string replicate (const char *s, size_t n)
-{
- std::string res;
- res.reserve (strlen (s) * n);
- while (n > 0) {
- res += s;
- --n;
- }
- return res;
-}
-
-// TODO: move this to tlString.h
-static std::string
-escape_xml (const std::string &s)
-{
- std::string res;
- for (const char *cp = s.c_str (); *cp; ++cp) {
- if (*cp == '\"') {
- res += """;
- } else if (*cp == '<') {
- res += "<";
- } else if (*cp == '>') {
- res += ">";
- } else if (*cp == '&') {
- res += "&";
- } else {
- res += *cp;
- }
- }
- return res;
-}
-
static int main_cont (int argc, char **argv);
int
@@ -148,7 +115,7 @@ run_tests (const std::vector &selected_tests, bool editable, boo
if (! (*t)->do_test (e != 0, slow)) {
- ut::ctrl << "name ()) << " failed (continued mode - see previous messages)" << "\"/>";
+ ut::ctrl << "name ()) << " failed (continued mode - see previous messages)" << "\"/>";
tl::error << "Test " << (*t)->name () << " failed (continued mode - see previous messages)";
failed_tests.push_back (*t);
@@ -166,7 +133,7 @@ run_tests (const std::vector &selected_tests, bool editable, boo
} catch (tl::Exception &ex) {
- ut::ctrl << "";
+ ut::ctrl << "";
tl::error << "Test " << (*t)->name () << " failed:";
tl::info << ex.msg ();