Add support for building with Meson
This is quite a large change that adds meson build files and tweaks wheel building to use meson and meson-python
This commit is contained in:
parent
8213a33fb9
commit
710117f566
|
@ -33,7 +33,7 @@ jobs:
|
|||
contents: read
|
||||
packages: write
|
||||
outputs:
|
||||
tag: ${{ steps.meta.outputs.labels || env.FALLBACK_TAG }}
|
||||
tag: ${{ steps.meta.outputs.tags || env.FALLBACK_TAG }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
|
@ -131,7 +131,7 @@ jobs:
|
|||
env:
|
||||
CIBW_PRERELEASE_PYTHONS: True
|
||||
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}
|
||||
CIBW_ENVIRONMENT: USE_CCACHE=1 CCACHE_DIR=/.ccache
|
||||
CIBW_ENVIRONMENT: USE_CCACHE=1 CCACHE_DIR=/.ccache BOOST_LIBRARYDIR=/usr/lib64/boost169 BOOST_INCLUDEDIR=/usr/include/boost169
|
||||
CIBW_CONTAINER_ENGINE: "docker; create_args: '--volume=${{ github.workspace }}/.ccache:/.ccache'"
|
||||
# overriede before-all in pyproject.toml
|
||||
CIBW_BEFORE_ALL: ""
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[submodule "coloquinte"]
|
||||
path = coloquinte
|
||||
path = subprojects/coloquinte
|
||||
# url = git@github.com:Coloquinte/PlaceRoute.git
|
||||
url = https://github.com/Coloquinte/PlaceRoute.git
|
||||
branch = coriolis-submodule
|
||||
|
|
|
@ -6,9 +6,7 @@ RUN yum -y install epel-release && \
|
|||
RUN yum install -y \
|
||||
qt5-qtbase-devel qt5-qtsvg-devel \
|
||||
rapidjson-devel bison flex doxygen bzip2-devel flex-devel \
|
||||
boost-devel \
|
||||
boost-python boost-filesystem \
|
||||
boost-regex boost-wave \
|
||||
boost169-devel \
|
||||
python36-devel libxml2-devel \
|
||||
qwt-devel \
|
||||
ccache \
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
subdir('src')
|
||||
|
||||
Anabatic = declare_dependency(
|
||||
link_with: [anabatic],
|
||||
include_directories: include_directories('src'),
|
||||
dependencies: [Etesian, Flute]
|
||||
)
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
anabatic = shared_library(
|
||||
'anabatic',
|
||||
'Constants.cpp',
|
||||
'Configuration.cpp',
|
||||
'Matrix.cpp',
|
||||
'EdgeCapacity.cpp',
|
||||
'Edge.cpp',
|
||||
'Edges.cpp',
|
||||
'GCell.cpp',
|
||||
'Dijkstra.cpp',
|
||||
'AutoContact.cpp',
|
||||
'AutoContactTerminal.cpp',
|
||||
'AutoContactTurn.cpp',
|
||||
'AutoContactHTee.cpp',
|
||||
'AutoContactVTee.cpp',
|
||||
'AutoSegment.cpp',
|
||||
'AutoSegments.cpp',
|
||||
'AutoHorizontal.cpp',
|
||||
'AutoVertical.cpp',
|
||||
'Session.cpp',
|
||||
'NetConstraints.cpp',
|
||||
'NetOptimals.cpp',
|
||||
'NetBuilder.cpp',
|
||||
'NetBuilderM2.cpp',
|
||||
'NetBuilderHV.cpp',
|
||||
'NetBuilderVH.cpp',
|
||||
'NetBuilderHybridVH.cpp',
|
||||
'ChipTools.cpp',
|
||||
'LayerAssign.cpp',
|
||||
'AntennaProtect.cpp',
|
||||
'PreRouteds.cpp',
|
||||
'AnabaticEngine.cpp',
|
||||
|
||||
dependencies: [Etesian],
|
||||
install: true,
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'pyanabatic',
|
||||
'PyStyleFlags.cpp',
|
||||
'PyAnabatic.cpp',
|
||||
|
||||
link_with: [anabatic],
|
||||
dependencies: [Etesian],
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
|
@ -448,7 +448,6 @@ endif()
|
|||
# "inc_install_dir").
|
||||
# * pymodule: The name of the Python module (for "import PYMODULE").
|
||||
# * deplibs: The list of dependencies.
|
||||
# * inc_install_dir: The directory into which install the includes.
|
||||
#
|
||||
macro( add_python_module3 pyCpps pyIncludes pymodule deplibs inc_install_dir )
|
||||
add_library( ${pymodule} MODULE ${pyCpps} )
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
subdir('src')
|
||||
subdir('python')
|
||||
|
||||
Bora = declare_dependency(
|
||||
link_with: [bora],
|
||||
include_directories: include_directories('src'),
|
||||
dependencies: [Katana]
|
||||
)
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
py.install_sources(
|
||||
'initHook.py',
|
||||
subdir: 'coriolis/bora',
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
bora_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'bora/SlicingDataModel.h',
|
||||
'bora/SlicingDataWidget.h',
|
||||
'bora/SlicingPlotWidget.h',
|
||||
'bora/SlicingWidget.h',
|
||||
'bora/GraphicBoraEngine.h',
|
||||
],
|
||||
dependencies: [Katana, qwt],
|
||||
)
|
||||
|
||||
bora_py = files([
|
||||
'PyParameterRange.cpp',
|
||||
'PyStepParameterRange.cpp',
|
||||
'PyMatrixParameterRange.cpp',
|
||||
'PySlicingNode.cpp',
|
||||
'PyDSlicingNode.cpp',
|
||||
'PyHSlicingNode.cpp',
|
||||
'PyRHSlicingNode.cpp',
|
||||
'PyRVSlicingNode.cpp',
|
||||
'PyVSlicingNode.cpp',
|
||||
'PyBoraEngine.cpp',
|
||||
'PyGraphicBoraEngine.cpp',
|
||||
'PyBora.cpp',
|
||||
])
|
||||
|
||||
|
||||
bora = shared_library(
|
||||
'bora',
|
||||
|
||||
'BoxSet.cpp',
|
||||
'NodeSets.cpp',
|
||||
'ParameterRange.cpp',
|
||||
'HVSetState.cpp',
|
||||
'SlicingNode.cpp',
|
||||
'HVSlicingNode.cpp',
|
||||
'HSlicingNode.cpp',
|
||||
'VSlicingNode.cpp',
|
||||
'DSlicingNode.cpp',
|
||||
'RHVSlicingNode.cpp',
|
||||
'RHSlicingNode.cpp',
|
||||
'RVSlicingNode.cpp',
|
||||
'ChannelRouting.cpp',
|
||||
'BoraEngine.cpp',
|
||||
'Pareto.cpp',
|
||||
'SlicingDataModel.cpp',
|
||||
'SlicingDataWidget.cpp',
|
||||
'SlicingPlotWidget.cpp',
|
||||
'SlicingWidget.cpp',
|
||||
'GraphicBoraEngine.cpp',
|
||||
|
||||
bora_mocs,
|
||||
bora_py,
|
||||
dependencies: [Katana, qwt],
|
||||
install: true,
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'Bora',
|
||||
|
||||
bora_py,
|
||||
|
||||
link_with: [bora],
|
||||
dependencies: [Katana, qwt],
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 97bb781ba363303fd6b7254c717f621b137b89e3
|
|
@ -0,0 +1,12 @@
|
|||
subdir('src/ccore')
|
||||
subdir('src/LibraryManager')
|
||||
subdir('src/cyclop')
|
||||
subdir('src/pyCRL')
|
||||
subdir('python')
|
||||
|
||||
CrlCore = declare_dependency(
|
||||
link_with: [crlcore, librarymanager, pycrlcore],
|
||||
include_directories: [crlcore_includes, pyCRL_includes, librarymanager_includes],
|
||||
dependencies: [qt_deps, py_deps, boost, rapidjson, Hurricane]
|
||||
)
|
||||
|
|
@ -0,0 +1,183 @@
|
|||
|
||||
py.install_sources(
|
||||
'helpers/__init__.py',
|
||||
'helpers/io.py',
|
||||
'helpers/utils.py',
|
||||
'helpers/overlay.py',
|
||||
'helpers/analogtechno.py',
|
||||
'helpers/technology.py',
|
||||
subdir: 'coriolis/helpers',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/common/__init__.py',
|
||||
'technos/common/analog.py',
|
||||
'technos/common/colors.py',
|
||||
'technos/common/devices.py',
|
||||
'technos/common/display.py',
|
||||
'technos/common/etesian.py',
|
||||
'technos/common/kite.py',
|
||||
'technos/common/misc.py',
|
||||
'technos/common/patterns.py',
|
||||
'technos/common/stratus1.py',
|
||||
'technos/common/technology.py',
|
||||
subdir: 'coriolis/technos/common',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/node180/__init__.py',
|
||||
subdir: 'coriolis/technos/node180',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/node180/gf180mcu/__init__.py',
|
||||
'technos/node180/gf180mcu/mcu9t5v0.py',
|
||||
'technos/node180/gf180mcu/techno.py',
|
||||
subdir: 'coriolis/technos/node180/gf180mcu',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/node180/scn6m_deep_09/__init__.py',
|
||||
'technos/node180/scn6m_deep_09/alliance.py',
|
||||
'technos/node180/scn6m_deep_09/analog.py',
|
||||
'technos/node180/scn6m_deep_09/devices.py',
|
||||
'technos/node180/scn6m_deep_09/display.py',
|
||||
'technos/node180/scn6m_deep_09/dtr_scn6m_deep_09.py',
|
||||
'technos/node180/scn6m_deep_09/etesian.py',
|
||||
'technos/node180/scn6m_deep_09/kite.py',
|
||||
'technos/node180/scn6m_deep_09/misc.py',
|
||||
'technos/node180/scn6m_deep_09/patterns.py',
|
||||
'technos/node180/scn6m_deep_09/plugins.py',
|
||||
'technos/node180/scn6m_deep_09/stratus1.py',
|
||||
'technos/node180/scn6m_deep_09/technology.py',
|
||||
subdir: 'coriolis/technos/node180/scn6m_deep_09',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/node45/__init__.py',
|
||||
subdir: 'coriolis/technos/node45',
|
||||
)
|
||||
|
||||
|
||||
py.install_sources(
|
||||
'technos/node45/freepdk45/__init__.py',
|
||||
'technos/node45/freepdk45/alliance.py',
|
||||
'technos/node45/freepdk45/analog.py',
|
||||
'technos/node45/freepdk45/devices.py',
|
||||
'technos/node45/freepdk45/display.py',
|
||||
'technos/node45/freepdk45/etesian.py',
|
||||
'technos/node45/freepdk45/kite.py',
|
||||
'technos/node45/freepdk45/misc.py',
|
||||
'technos/node45/freepdk45/patterns.py',
|
||||
'technos/node45/freepdk45/plugins.py',
|
||||
'technos/node45/freepdk45/stratus1.py',
|
||||
'technos/node45/freepdk45/technology.py',
|
||||
subdir: 'coriolis/technos/node45/freepdk45',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/node600/__init__.py',
|
||||
subdir: 'coriolis/technos/node600',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/node600/phenitec/__init__.py',
|
||||
'technos/node600/phenitec/alliance.py',
|
||||
'technos/node600/phenitec/analog.py',
|
||||
'technos/node600/phenitec/devices.py',
|
||||
'technos/node600/phenitec/display.py',
|
||||
'technos/node600/phenitec/etesian.py',
|
||||
'technos/node600/phenitec/kite.py',
|
||||
'technos/node600/phenitec/misc.py',
|
||||
'technos/node600/phenitec/patterns.py',
|
||||
'technos/node600/phenitec/plugins.py',
|
||||
'technos/node600/phenitec/stratus1.py',
|
||||
'technos/node600/phenitec/technology.py',
|
||||
subdir: 'coriolis/technos/node600/phenitec',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/symbolic/__init__.py',
|
||||
subdir: 'coriolis/technos/symbolic',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/symbolic/cmos/__init__.py',
|
||||
'technos/symbolic/cmos/alliance.py',
|
||||
'technos/symbolic/cmos/analog.py',
|
||||
'technos/symbolic/cmos/display.py',
|
||||
'technos/symbolic/cmos/etesian.py',
|
||||
'technos/symbolic/cmos/kite.py',
|
||||
'technos/symbolic/cmos/misc.py',
|
||||
'technos/symbolic/cmos/patterns.py',
|
||||
'technos/symbolic/cmos/plugins.py',
|
||||
'technos/symbolic/cmos/stratus1.py',
|
||||
'technos/symbolic/cmos/stratus2sxlib.xml',
|
||||
'technos/symbolic/cmos/technology.py',
|
||||
subdir: 'coriolis/technos/symbolic/cmos',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/symbolic/cmos45/__init__.py',
|
||||
'technos/symbolic/cmos45/alliance.py',
|
||||
'technos/symbolic/cmos45/analog.py',
|
||||
'technos/symbolic/cmos45/display.py',
|
||||
'technos/symbolic/cmos45/etesian.py',
|
||||
'technos/symbolic/cmos45/kite.py',
|
||||
'technos/symbolic/cmos45/misc.py',
|
||||
'technos/symbolic/cmos45/patterns.py',
|
||||
'technos/symbolic/cmos45/plugins.py',
|
||||
'technos/symbolic/cmos45/stratus1.py',
|
||||
'technos/symbolic/cmos45/technology.py',
|
||||
subdir: 'coriolis/technos/symbolic/cmos45',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/symbolic/ispd05/alliance.conf',
|
||||
'technos/symbolic/ispd05/analog.conf',
|
||||
'technos/symbolic/ispd05/display.conf',
|
||||
'technos/symbolic/ispd05/etesian.conf',
|
||||
'technos/symbolic/ispd05/hMetis.conf',
|
||||
'technos/symbolic/ispd05/kite.conf',
|
||||
'technos/symbolic/ispd05/mauka.conf',
|
||||
'technos/symbolic/ispd05/misc.conf',
|
||||
'technos/symbolic/ispd05/nimbus.conf',
|
||||
'technos/symbolic/ispd05/patterns.conf',
|
||||
'technos/symbolic/ispd05/plugins.conf',
|
||||
'technos/symbolic/ispd05/stratus1.conf',
|
||||
'technos/symbolic/ispd05/technology.conf',
|
||||
subdir: 'coriolis/technos/symbolic/ispd05',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/symbolic/lcmos/__init__.py',
|
||||
'technos/symbolic/lcmos/alliance.py',
|
||||
'technos/symbolic/lcmos/analog.py',
|
||||
'technos/symbolic/lcmos/display.py',
|
||||
'technos/symbolic/lcmos/etesian.py',
|
||||
'technos/symbolic/lcmos/kite.py',
|
||||
'technos/symbolic/lcmos/misc.py',
|
||||
'technos/symbolic/lcmos/patterns.py',
|
||||
'technos/symbolic/lcmos/plugins.py',
|
||||
'technos/symbolic/lcmos/stratus1.py',
|
||||
'technos/symbolic/lcmos/technology.py',
|
||||
subdir: 'coriolis/technos/symbolic/lcmos',
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'technos/symbolic/vsc200/alliance.conf',
|
||||
'technos/symbolic/vsc200/display.conf',
|
||||
'technos/symbolic/vsc200/etesian.conf',
|
||||
'technos/symbolic/vsc200/hMetis.conf',
|
||||
'technos/symbolic/vsc200/kite.conf',
|
||||
'technos/symbolic/vsc200/mauka.conf',
|
||||
'technos/symbolic/vsc200/misc.conf',
|
||||
'technos/symbolic/vsc200/nimbus.conf',
|
||||
'technos/symbolic/vsc200/patterns.conf',
|
||||
'technos/symbolic/vsc200/plugins.conf',
|
||||
'technos/symbolic/vsc200/stratus1.conf',
|
||||
'technos/symbolic/vsc200/technology.conf',
|
||||
subdir: 'coriolis/technos/symbolic/vsc200',
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
librarymanager_includes = include_directories('.')
|
||||
|
||||
librarymanager_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'crlcore/ViewsModel.h',
|
||||
'crlcore/ViewsWidget.h',
|
||||
'crlcore/CellsModel.h',
|
||||
'crlcore/CellsWidget.h',
|
||||
'crlcore/LibrariesModel.h',
|
||||
'crlcore/LibrariesWidget.h',
|
||||
'crlcore/LibraryManager.h',
|
||||
],
|
||||
include_directories: crlcore_includes,
|
||||
dependencies: Hurricane
|
||||
)
|
||||
|
||||
|
||||
librarymanager = shared_library(
|
||||
'librarymanager',
|
||||
|
||||
'ViewsModel.cpp',
|
||||
'ViewsWidget.cpp',
|
||||
'CellDatas.cpp',
|
||||
'CellsModel.cpp',
|
||||
'CellsWidget.cpp',
|
||||
'LibrariesModel.cpp',
|
||||
'LibrariesWidget.cpp',
|
||||
'LibraryManager.cpp',
|
||||
librarymanager_mocs,
|
||||
|
||||
link_with: crlcore,
|
||||
dependencies: [qt_deps, py_deps, boost, Hurricane, LefDef],
|
||||
include_directories: [crlcore_includes],
|
||||
install: true,
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
crlcore_includes = include_directories(
|
||||
'properties',
|
||||
'acmsigda',
|
||||
'iccad04',
|
||||
'spice',
|
||||
'lefdef',
|
||||
'blif',
|
||||
'alliance/ap',
|
||||
'alliance/vst',
|
||||
'cif',
|
||||
'liberty',
|
||||
'toolbox',
|
||||
'../fonts',
|
||||
'.'
|
||||
)
|
||||
|
||||
vst_parser_grammar = custom_target('VstParserGrammar.cpp',
|
||||
output: [ 'VstParserGrammar.cpp', 'VstParserGrammar.hpp' ],
|
||||
input: 'alliance/vst/VstParserGrammar.yy',
|
||||
command: [ bison, '-v', '-d', '-p', 'VST', '-o', '@OUTPUT0@', '-y', '@INPUT@' ]
|
||||
)
|
||||
|
||||
vst_parser_scanner = custom_target('VstParserScanner.cpp',
|
||||
output: [ 'VstParserScanner.cpp' ],
|
||||
input: 'alliance/vst/VstParserScanner.ll',
|
||||
command: [ flex, '-PVST', '-o@OUTPUT@', '@INPUT@' ],
|
||||
depends: vst_parser_grammar
|
||||
)
|
||||
|
||||
ioc_parser_grammar = custom_target('IocParserGrammar.cpp',
|
||||
output: [ 'IocParserGrammar.cpp', 'IocParserGrammar.hpp' ],
|
||||
input: 'ioc/IocParserGrammar.yy',
|
||||
command: [ bison, '-v', '-d', '-p', 'Ioc', '-o', '@OUTPUT0@', '-y', '@INPUT@' ]
|
||||
)
|
||||
|
||||
ioc_parser_scanner = custom_target('IocParserScanner.cpp',
|
||||
output: [ 'IocParserScanner.cpp' ],
|
||||
input: 'ioc/IocParserScanner.ll',
|
||||
command: [ flex, '-PIoc', '-o@OUTPUT@', '@INPUT@' ],
|
||||
depends: ioc_parser_grammar
|
||||
)
|
||||
|
||||
acmsigda_parser_grammar = custom_target('AcmSigdaParserGrammar.cpp',
|
||||
output: [ 'AcmSigdaParserGrammar.cpp', 'AcmSigdaParserGrammar.hpp' ],
|
||||
input: 'acmsigda/AcmSigdaParserGrammar.yy',
|
||||
command: [ bison, '-v', '-d', '-p', 'AcmSigda_', '-o', '@OUTPUT0@', '-y', '@INPUT@' ]
|
||||
)
|
||||
|
||||
acmsigda_parser_scanner = custom_target('AcmSigdaParserScanner.cpp',
|
||||
output: [ 'AcmSigdaParserScanner.cpp' ],
|
||||
input: 'acmsigda/AcmSigdaParserScanner.ll',
|
||||
command: [ flex, '-PAcmSigda_', '-o@OUTPUT@', '@INPUT@' ],
|
||||
depends: acmsigda_parser_grammar
|
||||
)
|
||||
|
||||
ccore_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'crlcore/GraphicToolEngine.h'
|
||||
],
|
||||
include_directories: crlcore_includes,
|
||||
dependencies: Hurricane
|
||||
)
|
||||
|
||||
crlcore = shared_library(
|
||||
'crlcore',
|
||||
'Utilities.cpp',
|
||||
'Memory.cpp',
|
||||
'Banner.cpp',
|
||||
'COptions.cpp',
|
||||
'Histogram.cpp',
|
||||
'OAParserDriver.cpp',
|
||||
'SearchPath.cpp',
|
||||
'Environment.cpp',
|
||||
'Catalog.cpp',
|
||||
'AllianceLibrary.cpp',
|
||||
'ParsersDrivers.cpp',
|
||||
'RoutingGauge.cpp',
|
||||
'CellGauge.cpp',
|
||||
'RoutingLayerGauge.cpp',
|
||||
'AllianceFramework.cpp',
|
||||
'ToolEngine.cpp',
|
||||
'GraphicToolEngine.cpp',
|
||||
|
||||
'spice/SpiceBit.cpp',
|
||||
'spice/SpiceEntity.cpp',
|
||||
'spice/SpiceParser.cpp',
|
||||
'spice/SpiceDriver.cpp',
|
||||
'alliance/ap/ApParser.cpp',
|
||||
'alliance/ap/ApDriver.cpp',
|
||||
'gds/GdsDriver.cpp',
|
||||
'gds/GdsParser.cpp',
|
||||
|
||||
'toolbox/HyperNetPortOccurrences.cpp',
|
||||
'toolbox/ToolBox.cpp',
|
||||
'toolbox/UniqueCellOccurrences.cpp',
|
||||
'toolbox/RoutingPads.cpp',
|
||||
'toolbox/NamingScheme.cpp',
|
||||
|
||||
'alliance/vst/VhdlBit.cpp',
|
||||
'alliance/vst/VhdlSignal.cpp',
|
||||
'alliance/vst/VhdlPortMap.cpp',
|
||||
'alliance/vst/VhdlEntity.cpp',
|
||||
'alliance/vst/VstDriver.cpp',
|
||||
|
||||
'properties/NetExtension.cpp',
|
||||
'properties/Measures.cpp',
|
||||
|
||||
'lefdef/LefExport.cpp',
|
||||
'lefdef/DefExport.cpp',
|
||||
'lefdef/LefImport.cpp',
|
||||
'lefdef/DefImport.cpp',
|
||||
'lefdef/LefDefExtension.cpp',
|
||||
'iccad04/Iccad04Lefdef.cpp',
|
||||
'blif/BlifParser.cpp',
|
||||
|
||||
'openaccess/OpenAccessParser.cpp',
|
||||
'openaccess/OpenAccessDriver.cpp',
|
||||
ccore_mocs,
|
||||
vst_parser_grammar,
|
||||
vst_parser_scanner,
|
||||
ioc_parser_grammar,
|
||||
ioc_parser_scanner,
|
||||
acmsigda_parser_grammar,
|
||||
acmsigda_parser_scanner,
|
||||
|
||||
dependencies: [qt_deps, py_deps, libxml2, thread_dep, boost, Hurricane, LefDef],
|
||||
include_directories: [crlcore_includes],
|
||||
install: true,
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
cyclop_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'Cyclop.h',
|
||||
'OpenCellDialog.h',
|
||||
],
|
||||
include_directories: crlcore_includes,
|
||||
dependencies: Hurricane
|
||||
)
|
||||
|
||||
executable(
|
||||
'cyclop',
|
||||
|
||||
'OpenCellDialog.cpp',
|
||||
'DemoGo.cpp',
|
||||
'Cyclop.cpp',
|
||||
'CyclopMain.cpp',
|
||||
cyclop_mocs,
|
||||
|
||||
include_directories: crlcore_includes,
|
||||
link_with: crlcore,
|
||||
dependencies: Hurricane,
|
||||
install: true
|
||||
)
|
|
@ -1,14 +1,6 @@
|
|||
py.extension_module(
|
||||
'Constant',
|
||||
'PyConstant.cpp',
|
||||
dependencies: [qt_deps, py_deps, boost, Hurricane],
|
||||
include_directories: crlcore_includes
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'CRL',
|
||||
pyCRL_includes = include_directories('.')
|
||||
|
||||
pyCRL_files = files([
|
||||
'PyCRL.cpp',
|
||||
'PySystem.cpp',
|
||||
'PyBanner.cpp',
|
||||
|
@ -32,37 +24,34 @@ py.extension_module(
|
|||
'PyDefImport.cpp',
|
||||
'PyLefExport.cpp',
|
||||
'PyDefExport.cpp',
|
||||
])
|
||||
|
||||
py.extension_module(
|
||||
'Constant',
|
||||
'PyConstant.cpp',
|
||||
dependencies: [qt_deps, py_deps, boost, Hurricane],
|
||||
include_directories: crlcore_includes
|
||||
include_directories: crlcore_includes,
|
||||
subdir: 'coriolis',
|
||||
install: true
|
||||
)
|
||||
|
||||
py.install_sources(
|
||||
'__init__.py',
|
||||
'',
|
||||
'helpers/__init__.py',
|
||||
'helpers/io.py',
|
||||
'helpers/utils.py',
|
||||
'helpers/overlay.py',
|
||||
'helpers/analogtechno.py',
|
||||
'helpers/technology.py',
|
||||
'',
|
||||
'technos/__init__.py',
|
||||
'technos/common',
|
||||
'technos/symbolic',
|
||||
'technos/node600',
|
||||
'technos/node180',
|
||||
'technos/node45',
|
||||
subdir: 'coriolis'
|
||||
pycrlcore = shared_library(
|
||||
'pycrlcore',
|
||||
pyCRL_files,
|
||||
link_with: crlcore,
|
||||
dependencies: [qt_deps, py_deps, boost, Hurricane],
|
||||
include_directories: crlcore_includes,
|
||||
install: true,
|
||||
)
|
||||
|
||||
pypathdir = meson.current_build_dir()
|
||||
|
||||
# Create a test script that runs a python script that uses
|
||||
# the C external module. Must populate PYTHONPATH to include
|
||||
# a path that includes the mymath.so dynamic library.
|
||||
test('pyCRL',
|
||||
py,
|
||||
args : files('mymath_test.py'),
|
||||
env : ['PYTHONPATH=' + pypathdir])
|
||||
|
||||
py.extension_module(
|
||||
'CRL',
|
||||
pyCRL_files,
|
||||
cpp_args: '-D__PYTHON_MODULE__=1',
|
||||
link_with: pycrlcore,
|
||||
dependencies: [qt_deps, py_deps, boost, Hurricane],
|
||||
include_directories: crlcore_includes,
|
||||
subdir: 'coriolis',
|
||||
install: true
|
||||
)
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
subdir('src')
|
||||
subdir('src/designflow')
|
||||
subdir('src/plugins')
|
||||
subdir('src/tools')
|
||||
|
||||
py.install_sources(cumulus, subdir: 'coriolis/cumulus')
|
||||
py.install_sources(designflow, subdir: 'coriolis/cumulus/designflow')
|
||||
py.install_sources(plugins, subdir: 'coriolis/cumulus/plugins')
|
||||
py.install_sources(block, subdir: 'coriolis/cumulus/plugins/block')
|
||||
py.install_sources(chip, subdir: 'coriolis/cumulus/plugins/chip')
|
||||
py.install_sources(core2chip, subdir: 'coriolis/cumulus/plugins/core2chip')
|
||||
py.install_sources(harness, subdir: 'coriolis/cumulus/plugins/harness')
|
||||
py.install_sources(macro, subdir: 'coriolis/cumulus/plugins/macro')
|
||||
py.install_sources(sram, subdir: 'coriolis/cumulus/plugins/sram')
|
||||
py.install_sources(tools, subdir: 'coriolis/cumulus/tools')
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
designflow = files([
|
||||
'__init__.py',
|
||||
'alias.py',
|
||||
'alliancesynth.py',
|
||||
'asimut.py',
|
||||
'blif2vst.py',
|
||||
'boog.py',
|
||||
'boom.py',
|
||||
'clean.py',
|
||||
'command.py',
|
||||
'copy.py',
|
||||
'cougar.py',
|
||||
'dreal.py',
|
||||
'druc.py',
|
||||
'flatph.py',
|
||||
'genpat.py',
|
||||
'graal.py',
|
||||
'klayout.py',
|
||||
'loon.py',
|
||||
'lvx.py',
|
||||
'pnr.py',
|
||||
'pnrcheck.py',
|
||||
'routecheck.py',
|
||||
's2r.py',
|
||||
'task.py',
|
||||
'technos.py',
|
||||
'vasy.py',
|
||||
'yosys.py',
|
||||
'yosysnp.py',
|
||||
])
|
|
@ -0,0 +1,5 @@
|
|||
cumulus = files([
|
||||
'__init__.py'
|
||||
])
|
||||
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
block = files([
|
||||
'__init__.py',
|
||||
'bigvia.py',
|
||||
'block.py',
|
||||
'configuration.py',
|
||||
'hfns1.py',
|
||||
'hfns2.py',
|
||||
'hfns3.py',
|
||||
'hfns4.py',
|
||||
'htree.py',
|
||||
'iospecs.py',
|
||||
'matrix.py',
|
||||
'meson.build',
|
||||
'rsmt.py',
|
||||
'spares.py',
|
||||
'timing.py',
|
||||
])
|
|
@ -0,0 +1,10 @@
|
|||
chip = files([
|
||||
'__init__.py',
|
||||
'chip.py',
|
||||
'configuration.py',
|
||||
'constants.py',
|
||||
'corona.py',
|
||||
'pads.py',
|
||||
'power.py',
|
||||
'powerplane.py',
|
||||
])
|
|
@ -0,0 +1,10 @@
|
|||
core2chip = files([
|
||||
'__init__.py',
|
||||
'cmos.py',
|
||||
'core2chip.py',
|
||||
'libresocio.py',
|
||||
'niolib.py',
|
||||
'phlib.py',
|
||||
'phlib80.py',
|
||||
'sky130.py',
|
||||
])
|
|
@ -0,0 +1,4 @@
|
|||
harness = files([
|
||||
'__init__.py',
|
||||
'pads.py',
|
||||
])
|
|
@ -0,0 +1,4 @@
|
|||
macro = files([
|
||||
'__init__.py',
|
||||
'macro.py',
|
||||
])
|
|
@ -0,0 +1,19 @@
|
|||
subdir('block')
|
||||
subdir('chip')
|
||||
subdir('core2chip')
|
||||
subdir('harness')
|
||||
subdir('macro')
|
||||
subdir('sram')
|
||||
|
||||
plugins = files([
|
||||
'__init__.py',
|
||||
'aboutwindow.py',
|
||||
'checks.py',
|
||||
'conductor.py',
|
||||
'matrixplacer.py',
|
||||
'rsave.py',
|
||||
'rsaveall.py',
|
||||
's2r.py',
|
||||
'stats.py',
|
||||
'utils.py',
|
||||
])
|
|
@ -0,0 +1,7 @@
|
|||
sram = files([
|
||||
'__init__.py',
|
||||
'sram.py',
|
||||
'sram_256x32.py',
|
||||
'sramplacer1.py',
|
||||
'sramplacer2.py',
|
||||
])
|
|
@ -0,0 +1,5 @@
|
|||
tools = files([
|
||||
'blif2vst.py',
|
||||
'px2mpx.py',
|
||||
'yosys.py',
|
||||
])
|
|
@ -0,0 +1,8 @@
|
|||
subdir('src')
|
||||
|
||||
Equinox = declare_dependency(
|
||||
link_with: [equinox],
|
||||
include_directories: [equinox_includes],
|
||||
dependencies: [CrlCore]
|
||||
)
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
equinox_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'equinox/GraphicEquinoxEngine.h',
|
||||
],
|
||||
dependencies: [CrlCore],
|
||||
)
|
||||
|
||||
|
||||
equinox_includes = include_directories('.', 'intervalTree/src')
|
||||
equinox = shared_library(
|
||||
'equinox',
|
||||
|
||||
'EquinoxFilters.cpp',
|
||||
'EquinoxCollections.cpp',
|
||||
'Equi.cpp',
|
||||
'TileSweepLine.cpp',
|
||||
'Tile.cpp',
|
||||
'Strategy.cpp',
|
||||
'EquinoxEngine.cpp',
|
||||
'UnionFind.cpp',
|
||||
'GraphicEquinoxEngine.cpp',
|
||||
'intervalTree/src/IntervalTree.cpp',
|
||||
equinox_mocs,
|
||||
|
||||
include_directories: equinox_includes,
|
||||
dependencies: [CrlCore],
|
||||
install: true,
|
||||
)
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
subdir('src')
|
||||
|
||||
Etesian = declare_dependency(
|
||||
link_with: [etesian],
|
||||
include_directories: include_directories('src'),
|
||||
dependencies: [Hurricane, CrlCore, Coloquinte]
|
||||
)
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
#include <tuple>
|
||||
#include <iostream>
|
||||
#include <unordered_map>
|
||||
#include "coloquinte/coloquinte.hpp"
|
||||
#include "coloquinte.hpp"
|
||||
|
||||
#include "hurricane/Timer.h"
|
||||
#include "hurricane/Name.h"
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
etesian_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'etesian/GraphicEtesianEngine.h',
|
||||
],
|
||||
dependencies: [Hurricane, CrlCore, Coloquinte],
|
||||
)
|
||||
|
||||
etesian = shared_library(
|
||||
'etesian',
|
||||
'Configuration.cpp',
|
||||
'HFNS.cpp',
|
||||
'AddFeeds.cpp',
|
||||
'Placement.cpp',
|
||||
'FlattenPower.cpp',
|
||||
'FeedCells.cpp',
|
||||
'BufferCells.cpp',
|
||||
'BloatCells.cpp',
|
||||
'BloatProperty.cpp',
|
||||
'EtesianEngine.cpp',
|
||||
'GraphicEtesianEngine.cpp',
|
||||
etesian_mocs,
|
||||
dependencies: [Hurricane, CrlCore, Coloquinte],
|
||||
install: true,
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'Etesian',
|
||||
'PyEtesian.cpp',
|
||||
'PyEtesianEngine.cpp',
|
||||
'PyGraphicEtesianEngine.cpp',
|
||||
|
||||
link_with: [configuration],
|
||||
dependencies: [Hurricane, CrlCore, Coloquinte],
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
subdir('src/3.1/')
|
||||
|
||||
Flute = declare_dependency(
|
||||
link_with: [flute],
|
||||
include_directories: include_directories('src/3.1'),
|
||||
dependencies: [Hurricane, CrlCore]
|
||||
)
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
flute_includes = include_directories('.')
|
||||
|
||||
flute = shared_library(
|
||||
'flute',
|
||||
|
||||
'flute.cpp',
|
||||
'flute_mst.cpp',
|
||||
'dist.cpp',
|
||||
'dl.cpp',
|
||||
'err.cpp',
|
||||
'mst2.cpp',
|
||||
'heap.cpp',
|
||||
'neighbors.cpp',
|
||||
dependencies: [Hurricane],
|
||||
include_directories: flute_includes,
|
||||
install: true,
|
||||
)
|
||||
|
||||
|
||||
py.extension_module(
|
||||
'Flute',
|
||||
'PyFlute.cpp',
|
||||
dependencies: [py_deps, Hurricane, CrlCore],
|
||||
include_directories: flute_includes,
|
||||
subdir: 'coriolis',
|
||||
install: true
|
||||
)
|
||||
|
||||
|
||||
install_data(
|
||||
'POST9.dat',
|
||||
'POWV9.dat',
|
||||
install_dir: py.get_install_dir(pure: false) / 'coriolis'
|
||||
)
|
|
@ -1,6 +1,4 @@
|
|||
bzip2 = cc.find_library('bz2', required: true)
|
||||
rapidjson = dependency('RapidJSON', required: true)
|
||||
flex = find_program('flex', required: true)
|
||||
bison = find_program('bison', required: true)
|
||||
subdir('src')
|
||||
|
||||
|
|
|
@ -1,3 +1,38 @@
|
|||
analog_py_files = files([
|
||||
'PyAnalog.cpp',
|
||||
'PyCapacitorFamily.cpp',
|
||||
'PyCapacitorParameter.cpp',
|
||||
'PyCascode.cpp',
|
||||
'PyChoiceParameter.cpp',
|
||||
'PyCommonDrain.cpp',
|
||||
'PyCommonGatePair.cpp',
|
||||
'PyCommonSourcePair.cpp',
|
||||
'PyCrossCoupledPair.cpp',
|
||||
'PyDevice.cpp',
|
||||
'PyDifferentialPair.cpp',
|
||||
'PyFormFactorParameter.cpp',
|
||||
'PyLayoutGenerator.cpp',
|
||||
'PyLevelShifter.cpp',
|
||||
'PyMCheckBoxParameter.cpp',
|
||||
'PyMultiCapacitor.cpp',
|
||||
'PyMatrix.cpp',
|
||||
'PyParameter.cpp',
|
||||
'PySimpleCurrentMirror.cpp',
|
||||
'PySpinBoxParameter.cpp',
|
||||
'PyStepParameter.cpp',
|
||||
'PyStringParameter.cpp',
|
||||
'PyFloatParameter.cpp',
|
||||
'PyTransistor.cpp',
|
||||
'PyTransistorFamily.cpp',
|
||||
'PyTransistorPair.cpp',
|
||||
'PyMatrixParameter.cpp',
|
||||
'PyCapacitiesParameter.cpp',
|
||||
'PyMultiCapacitor.cpp',
|
||||
'PyResistorFamily.cpp',
|
||||
'PyResistor.cpp'
|
||||
])
|
||||
|
||||
|
||||
analog = shared_library(
|
||||
'analog',
|
||||
'AnalogCellExtension.cpp',
|
||||
|
@ -39,50 +74,20 @@ analog = shared_library(
|
|||
'MetaResistor.cpp',
|
||||
'ResistorFamily.cpp',
|
||||
'Resistor.cpp',
|
||||
|
||||
'PyAnalog.cpp',
|
||||
'PyCapacitorFamily.cpp',
|
||||
'PyCapacitorParameter.cpp',
|
||||
'PyCascode.cpp',
|
||||
'PyChoiceParameter.cpp',
|
||||
'PyCommonDrain.cpp',
|
||||
'PyCommonGatePair.cpp',
|
||||
'PyCommonSourcePair.cpp',
|
||||
'PyCrossCoupledPair.cpp',
|
||||
'PyDevice.cpp',
|
||||
'PyDifferentialPair.cpp',
|
||||
'PyFormFactorParameter.cpp',
|
||||
'PyLayoutGenerator.cpp',
|
||||
'PyLevelShifter.cpp',
|
||||
'PyMCheckBoxParameter.cpp',
|
||||
'PyMultiCapacitor.cpp',
|
||||
'PyMatrix.cpp',
|
||||
'PyParameter.cpp',
|
||||
'PySimpleCurrentMirror.cpp',
|
||||
'PySpinBoxParameter.cpp',
|
||||
'PyStepParameter.cpp',
|
||||
'PyStringParameter.cpp',
|
||||
'PyFloatParameter.cpp',
|
||||
'PyTransistor.cpp',
|
||||
'PyTransistorFamily.cpp',
|
||||
'PyTransistorPair.cpp',
|
||||
'PyMatrixParameter.cpp',
|
||||
'PyCapacitiesParameter.cpp',
|
||||
'PyMultiCapacitor.cpp',
|
||||
'PyResistorFamily.cpp',
|
||||
'PyResistor.cpp',
|
||||
|
||||
analog_py_files,
|
||||
dependencies: [qt_deps, py_deps, boost],
|
||||
link_with: [hurricane, isobar, utils],
|
||||
include_directories: includes
|
||||
link_with: [hurricane, isobar, utilities],
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'Analog',
|
||||
dependencies: [qt_deps, py_deps, boost, rapidjson],
|
||||
link_with: [hurricane, utils, configuration, pytypemanager, isobar, analog],
|
||||
include_directories: includes
|
||||
analog_py_files,
|
||||
dependencies: [qt_deps, py_mod_deps, boost, rapidjson],
|
||||
link_with: [hurricane, utilities, configuration, pytypemanager, isobar, analog],
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ mocs = qt.compile_moc(
|
|||
'hurricane/configuration/LogWidget.h',
|
||||
'hurricane/configuration/ConfigurationWidget.h',
|
||||
'hurricane/configuration/ConfEditorWidget.h' ],
|
||||
include_directories: includes
|
||||
include_directories: hurricane_includes
|
||||
)
|
||||
|
||||
resources = qt.compile_resources(
|
||||
|
@ -27,8 +27,9 @@ configuration = shared_library(
|
|||
mocs,
|
||||
resources,
|
||||
dependencies: [qt_deps, boost],
|
||||
link_with: [hurricane, isobar, utils],
|
||||
include_directories: includes
|
||||
link_with: [hurricane, isobar, utilities],
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
)
|
||||
|
||||
pytypemanager = shared_library(
|
||||
|
@ -37,7 +38,8 @@ pytypemanager = shared_library(
|
|||
'PyTypeManager.cpp',
|
||||
dependencies: [qt_deps, boost, py_deps],
|
||||
link_with: [hurricane, isobar],
|
||||
include_directories: includes
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
|
@ -46,9 +48,11 @@ py.extension_module(
|
|||
'PyConfiguration.cpp',
|
||||
'PyLayoutDescription.cpp',
|
||||
'PyCfg.cpp',
|
||||
dependencies: [qt_deps, py_deps, boost],
|
||||
dependencies: [qt_deps, py_mod_deps, boost],
|
||||
link_with: [isobar, hurricane, configuration, pytypemanager],
|
||||
include_directories: includes
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
|
@ -67,7 +71,9 @@ py.extension_module(
|
|||
'PyDiffusionLayer.cpp',
|
||||
'PyTransistorLayer.cpp',
|
||||
'PyHurricane3.cpp',
|
||||
dependencies: hurricane_deps,
|
||||
dependencies: [qt_deps, py_mod_deps, boost],
|
||||
link_with: [hurricane, configuration, pytypemanager],
|
||||
include_directories: includes
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
|
|
@ -90,8 +90,10 @@ hurricane = shared_library(
|
|||
'UnitRule.cpp',
|
||||
'PhysicalRule.cpp',
|
||||
'TwoLayersPhysicalRule.cpp',
|
||||
'Text.cpp',
|
||||
|
||||
dependencies: [qt_deps, boost, rapidjson, bzip2],
|
||||
include_directories: includes
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
)
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ using namespace Hurricane;
|
|||
void* getShadow () const { return _shadow; };
|
||||
void* getShadowMember () const { return (void*)((unsigned long)_shadow+_offset); };
|
||||
template<typename DBoType>
|
||||
DBoType* getAsType () { return dynamic_cast<DBoType*>(_owner); };
|
||||
DBoType* getAsType () { return dynamic_cast<DBoType*>(_owner); }
|
||||
public:
|
||||
virtual Name getName () const { return getPropertyName(); }
|
||||
virtual void onCapturedBy ( DBo* owner );
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
isobar_sources = [
|
||||
isobar_sources = files([
|
||||
'ProxyProperty.cpp',
|
||||
'PythonAttributes.cpp',
|
||||
'PyBreakpoint.cpp',
|
||||
|
@ -79,22 +79,15 @@ isobar_sources = [
|
|||
'Script.cpp',
|
||||
'PyCellViewer.cpp',
|
||||
'PyErrorWidget.cpp',
|
||||
]
|
||||
])
|
||||
|
||||
isobar = library(
|
||||
'isobar',
|
||||
isobar_sources,
|
||||
dependencies: [qt_deps, py_deps, boost],
|
||||
link_with: [hurricane],
|
||||
include_directories: includes
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'Isobar',
|
||||
isobar_sources,
|
||||
dependencies: [qt_deps, py_deps, boost],
|
||||
link_with: [isobar],
|
||||
include_directories: includes
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
includes = include_directories(
|
||||
hurricane_includes = include_directories(
|
||||
'hurricane',
|
||||
'utilities',
|
||||
'isobar',
|
||||
|
@ -16,3 +16,19 @@ subdir('configuration')
|
|||
subdir('analog')
|
||||
subdir('viewer')
|
||||
|
||||
py.extension_module(
|
||||
'Hurricane',
|
||||
isobar_sources,
|
||||
dependencies: [qt_deps, py_mod_deps, boost],
|
||||
link_with: [isobar, viewer],
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
||||
Hurricane = declare_dependency(
|
||||
link_with: [viewer,analog,configuration,isobar,utilities,hurricane],
|
||||
include_directories: hurricane_includes,
|
||||
dependencies: [qt_deps, py_deps, boost, rapidjson]
|
||||
)
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
utils = shared_library(
|
||||
utilities = shared_library(
|
||||
'utils',
|
||||
'Path.cpp',
|
||||
'Dots.cpp',
|
||||
link_with: hurricane
|
||||
link_with: hurricane,
|
||||
install: true,
|
||||
)
|
||||
|
||||
|
|
|
@ -34,13 +34,24 @@ viewer_mocs = qt.compile_moc(
|
|||
'hurricane/viewer/ScriptWidget.h',
|
||||
'hurricane/viewer/AboutWindow.h'
|
||||
],
|
||||
include_directories: includes
|
||||
include_directories: hurricane_includes
|
||||
)
|
||||
|
||||
viewer_resources = qt.compile_resources(
|
||||
sources: 'CellViewer.qrc'
|
||||
)
|
||||
|
||||
viewer_py = files([
|
||||
'PyHSVr.cpp',
|
||||
'PyDrawingStyle.cpp',
|
||||
'PyDrawingGroup.cpp',
|
||||
'PyDisplayStyle.cpp',
|
||||
'PyHApplication.cpp',
|
||||
'PyGraphics.cpp',
|
||||
'PyViewer.cpp',
|
||||
'PyAboutWindow.cpp'
|
||||
])
|
||||
|
||||
viewer = shared_library(
|
||||
'viewer',
|
||||
'HApplication.cpp',
|
||||
|
@ -93,26 +104,22 @@ viewer = shared_library(
|
|||
'DesignBlob.cpp',
|
||||
'JsonConfiguration.cpp',
|
||||
'AboutWindow.cpp',
|
||||
'PyHSVr.cpp',
|
||||
'PyDrawingStyle.cpp',
|
||||
'PyDrawingGroup.cpp',
|
||||
'PyDisplayStyle.cpp',
|
||||
'PyHApplication.cpp',
|
||||
'PyGraphics.cpp',
|
||||
'PyViewer.cpp',
|
||||
'PyAboutWindow.cpp',
|
||||
viewer_py,
|
||||
viewer_mocs,
|
||||
viewer_resources,
|
||||
dependencies: [qt_deps, py_deps, boost, rapidjson],
|
||||
link_with: [hurricane, utils, configuration, pytypemanager, isobar, analog],
|
||||
include_directories: includes
|
||||
link_with: [hurricane, utilities, configuration, pytypemanager, isobar, analog],
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'Viewer',
|
||||
dependencies: [qt_deps, py_deps, boost, rapidjson],
|
||||
link_with: [hurricane, utils, configuration, pytypemanager, viewer, isobar, analog],
|
||||
include_directories: includes
|
||||
viewer_py,
|
||||
dependencies: [qt_deps, py_mod_deps, boost, rapidjson],
|
||||
link_with: [hurricane, utilities, configuration, pytypemanager, viewer, isobar, analog],
|
||||
include_directories: hurricane_includes,
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
subdir('python')
|
|
@ -0,0 +1,9 @@
|
|||
py.install_sources(
|
||||
'__init__.py',
|
||||
'oceane.py',
|
||||
'analogdesign.py',
|
||||
|
||||
subdir: 'coriolis/karakaze',
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
subdir('src')
|
||||
subdir('python')
|
||||
|
||||
Katana = declare_dependency(
|
||||
link_with: [katana],
|
||||
include_directories: include_directories('src'),
|
||||
dependencies: [Anabatic]
|
||||
)
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
py.install_sources(
|
||||
'initHook.py',
|
||||
subdir: 'coriolis/katana',
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
katana_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'katana/GraphicKatanaEngine.h',
|
||||
],
|
||||
dependencies: [Anabatic],
|
||||
)
|
||||
|
||||
katana_py = files([
|
||||
'PyKatana.cpp',
|
||||
'PyKatanaEngine.cpp',
|
||||
'PyGraphicKatanaEngine.cpp',
|
||||
'PyKatanaFlags.cpp',
|
||||
])
|
||||
|
||||
|
||||
katana = shared_library(
|
||||
'katana',
|
||||
|
||||
'Constants.cpp',
|
||||
'Configuration.cpp',
|
||||
'Block.cpp',
|
||||
'DataNegociate.cpp',
|
||||
'DataSymmetric.cpp',
|
||||
'TrackCost.cpp',
|
||||
'TrackElement.cpp',
|
||||
'TrackElements.cpp',
|
||||
'TrackSegment.cpp',
|
||||
'TrackSegmentRegular.cpp',
|
||||
'TrackSegmentNonPref.cpp',
|
||||
'TrackSegmentWide.cpp',
|
||||
'TrackFixedSegment.cpp',
|
||||
'TrackMarker.cpp',
|
||||
'Track.cpp',
|
||||
'Tracks.cpp',
|
||||
'HorizontalTrack.cpp',
|
||||
'VerticalTrack.cpp',
|
||||
'RoutingPlane.cpp',
|
||||
'Session.cpp',
|
||||
'Manipulator.cpp',
|
||||
'SegmentFsm.cpp',
|
||||
'RoutingEvent.cpp',
|
||||
'RoutingEventQueue.cpp',
|
||||
'RoutingEventHistory.cpp',
|
||||
'RoutingEventLoop.cpp',
|
||||
'NegociateWindow.cpp',
|
||||
'PowerRails.cpp',
|
||||
'PreRouteds.cpp',
|
||||
'ProtectRoutingPads.cpp',
|
||||
'PreProcess.cpp',
|
||||
'BloatProfile.cpp',
|
||||
'GlobalRoute.cpp',
|
||||
'SymmetricRoute.cpp',
|
||||
'KatanaEngine.cpp',
|
||||
'GraphicKatanaEngine.cpp',
|
||||
|
||||
katana_mocs,
|
||||
katana_py,
|
||||
dependencies: [Anabatic],
|
||||
install: true,
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'Katana',
|
||||
|
||||
katana_py,
|
||||
|
||||
link_with: [katana],
|
||||
dependencies: [Anabatic],
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
lefdef_includes = include_directories('src/lef/lef', 'src/def/def')
|
||||
|
||||
subdir('src/lef')
|
||||
subdir('src/def')
|
||||
|
||||
lef_generated = custom_target('lef.tab.cpp',
|
||||
output: [ 'lef.tab.cpp', 'lef.tab.hpp' ],
|
||||
input: lef_grammer,
|
||||
command: [ bison, '-v', '-p lefyy', '-d', '-o@OUTPUT0@',
|
||||
'@INPUT@' ]
|
||||
)
|
||||
|
||||
def_generated = custom_target('def.tab.cpp',
|
||||
output: [ 'def.tab.cpp', 'def.tab.hpp' ],
|
||||
input: def_grammer,
|
||||
command: [ bison, '-v', '-p defyy', '-d', '-o@OUTPUT0@',
|
||||
'@INPUT@' ]
|
||||
)
|
||||
|
||||
zlib = dependency('zlib')
|
||||
|
||||
lefdef = shared_library(
|
||||
'lefdef',
|
||||
lef_files,
|
||||
def_files,
|
||||
lef_generated,
|
||||
def_generated,
|
||||
|
||||
dependencies: zlib,
|
||||
include_directories: lefdef_includes,
|
||||
|
||||
cpp_args: [
|
||||
'-Wno-format-extra-args',
|
||||
'-Wno-error=unused-but-set-variable',
|
||||
'-Wno-reorder-ctor',
|
||||
'-Wno-format'
|
||||
],
|
||||
)
|
||||
|
||||
LefDef = declare_dependency(
|
||||
link_with: lefdef,
|
||||
include_directories: lefdef_includes
|
||||
)
|
|
@ -0,0 +1,37 @@
|
|||
def_files = files([
|
||||
'def/def_keywords.cpp',
|
||||
'def/defiAlias.cpp',
|
||||
'def/defiAssertion.cpp',
|
||||
'def/defiBlockage.cpp',
|
||||
'def/defiComponent.cpp',
|
||||
'def/defiDebug.cpp',
|
||||
'def/defiFPC.cpp',
|
||||
'def/defiFill.cpp',
|
||||
'def/defiGroup.cpp',
|
||||
'def/defiIOTiming.cpp',
|
||||
'def/defiMisc.cpp',
|
||||
'def/defiNet.cpp',
|
||||
'def/defiNonDefault.cpp',
|
||||
'def/defiPartition.cpp',
|
||||
'def/defiPath.cpp',
|
||||
'def/defiPinCap.cpp',
|
||||
'def/defiPinProp.cpp',
|
||||
'def/defiProp.cpp',
|
||||
'def/defiPropType.cpp',
|
||||
'def/defiRegion.cpp',
|
||||
'def/defiRowTrack.cpp',
|
||||
'def/defiScanchain.cpp',
|
||||
'def/defiSite.cpp',
|
||||
'def/defiSlot.cpp',
|
||||
'def/defiTimingDisable.cpp',
|
||||
'def/defiUtil.cpp',
|
||||
'def/defiVia.cpp',
|
||||
'def/defrCallbacks.cpp',
|
||||
'def/defrData.cpp',
|
||||
'def/defrReader.cpp',
|
||||
'def/defrSettings.cpp',
|
||||
'def/defwWriter.cpp',
|
||||
'def/defwWriterCalls.cpp',
|
||||
])
|
||||
|
||||
def_grammer = files('def/def.y')
|
|
@ -0,0 +1,26 @@
|
|||
lef_files = files ([
|
||||
'lef/crypt.cpp',
|
||||
'lef/lef_keywords.cpp',
|
||||
'lef/lefiArray.cpp',
|
||||
'lef/lefiCrossTalk.cpp',
|
||||
'lef/lefiDebug.cpp',
|
||||
'lef/lefiEncryptInt.cpp',
|
||||
'lef/lefiLayer.cpp',
|
||||
'lef/lefiMacro.cpp',
|
||||
'lef/lefiMisc.cpp',
|
||||
'lef/lefiNonDefault.cpp',
|
||||
'lef/lefiProp.cpp',
|
||||
'lef/lefiPropType.cpp',
|
||||
'lef/lefiTBExt.cpp',
|
||||
'lef/lefiUnits.cpp',
|
||||
'lef/lefiVia.cpp',
|
||||
'lef/lefiViaRule.cpp',
|
||||
'lef/lefrCallbacks.cpp',
|
||||
'lef/lefrData.cpp',
|
||||
'lef/lefrReader.cpp',
|
||||
'lef/lefrSettings.cpp',
|
||||
'lef/lefwWriter.cpp',
|
||||
'lef/lefwWriterCalls.cpp',
|
||||
])
|
||||
|
||||
lef_grammer = files('lef/lef.y')
|
60
meson.build
60
meson.build
|
@ -2,7 +2,7 @@ project(
|
|||
'coriolis-eda',
|
||||
'c','cpp',
|
||||
version: '2.5.5',
|
||||
meson_version: '>= 0.63.0',
|
||||
meson_version: '>= 1.2.0',
|
||||
default_options: [
|
||||
'buildtype=debugoptimized',
|
||||
'c_std=c99',
|
||||
|
@ -20,11 +20,23 @@ add_project_arguments(
|
|||
'-Wno-return-type-c-linkage',
|
||||
'-Wno-unused-variable',
|
||||
'-Wno-#pragma-messages',
|
||||
'-Wno-unknown-pragmas',
|
||||
'-Wno-unused-but-set-variable',
|
||||
'-Wno-overloaded-virtual',
|
||||
language: ['c','cpp']
|
||||
)
|
||||
|
||||
py = import('python').find_installation()
|
||||
py_deps = dependency('python3-embed', required: true)
|
||||
if get_option('check-database')
|
||||
add_project_arguments('-DCHECK_DATABASE')
|
||||
endif
|
||||
|
||||
py = import('python').find_installation(pure:false)
|
||||
py_deps = dependency('python3-embed', required: false)
|
||||
if not py_deps.found()
|
||||
py_deps = dependency('python3', required: true)
|
||||
endif
|
||||
|
||||
py_mod_deps = declare_dependency(dependencies: py_deps, compile_args: '-D__PYTHON_MODULE__=1')
|
||||
|
||||
qt = import('qt5')
|
||||
qt_deps = dependency('qt5',
|
||||
|
@ -32,6 +44,46 @@ qt_deps = dependency('qt5',
|
|||
required:true
|
||||
)
|
||||
|
||||
boost = dependency('boost', required: true)
|
||||
cmake =import('cmake')
|
||||
|
||||
boost = dependency('boost', modules: ['program_options'], required: true)
|
||||
libxml2 = dependency('libxml-2.0', required: true)
|
||||
flex = find_program('flex', required: true)
|
||||
bison = find_program('bison', required: true)
|
||||
thread_dep = dependency('threads')
|
||||
|
||||
if build_machine.system() == 'darwin'
|
||||
add_project_arguments('-mmacosx-version-min=13.0', language: ['c','cpp'])
|
||||
|
||||
add_project_link_arguments('-Wl,-rpath,@loader_path/', language: ['c','cpp'])
|
||||
add_project_link_arguments('-Wl,-rpath,@loader_path/../lib/python' + py.language_version() + '/site-packages/coriolis', language: ['c','cpp'])
|
||||
|
||||
qt5qwt6 = dependency('Qt5Qwt6', required: true)
|
||||
qwt_framework = qt5qwt6.get_pkgconfig_variable('libdir') / 'qwt.framework/Versions/6/Headers/'
|
||||
qwt = declare_dependency(include_directories: include_directories(qwt_framework), dependencies: qt5qwt6)
|
||||
|
||||
else
|
||||
qwt = dependency('qwt', required: false)
|
||||
if not qwt.found()
|
||||
qwt = dependency('Qt5Qwt6', required: true)
|
||||
endif
|
||||
endif
|
||||
|
||||
#not ideal, hopefully coloquinte can switch to useing more modern targets, or to using meson!
|
||||
coloquinte_sub = subproject('coloquinte')
|
||||
Coloquinte = coloquinte_sub.get_variable('coloquinte_dep')
|
||||
|
||||
subdir('hurricane')
|
||||
subdir('lefdef')
|
||||
subdir('crlcore')
|
||||
subdir('flute')
|
||||
subdir('etesian')
|
||||
subdir('anabatic')
|
||||
subdir('katana')
|
||||
subdir('equinox')
|
||||
subdir('solstice')
|
||||
subdir('oroshi')
|
||||
subdir('bora')
|
||||
subdir('unicorn')
|
||||
subdir('cumulus')
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
option('check-database', type : 'boolean', value : false, description: 'Build with database checking enabled. Very slow!')
|
|
@ -0,0 +1,6 @@
|
|||
subdir('python')
|
||||
|
||||
Oroshi = declare_dependency(
|
||||
dependencies: [CrlCore]
|
||||
)
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
py.install_sources(
|
||||
'__init__.py',
|
||||
'dtr.py',
|
||||
'stack.py',
|
||||
'paramsmatrix.py',
|
||||
'wip_transistor.py',
|
||||
'wip_dp.py',
|
||||
'wip_csp.py',
|
||||
'nonunitcapacitor.py',
|
||||
'capacitorunit.py',
|
||||
'capacitormatrix.py',
|
||||
'capacitorvrtracks.py',
|
||||
'capacitorrouted.py',
|
||||
'capacitorroutedsingle.py',
|
||||
'multicapacitor.py',
|
||||
'resistorsnake.py',
|
||||
'resistor.py',
|
||||
|
||||
subdir: 'coriolis/oroshi',
|
||||
)
|
||||
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
name = "coriolis-eda"
|
||||
version = "2.5.5"
|
||||
description = "Place and Route for semiconductors"
|
||||
authors = ["Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>"]
|
||||
authors = [ { name = "Coriolis EDA Contributers" } ]
|
||||
readme = "README.rst"
|
||||
homepage = "https://github.com/lip6/coriolis"
|
||||
repository = "https://github.com/lip6/coriolis"
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
subdir('src')
|
||||
|
||||
Solstice = declare_dependency(
|
||||
link_with: [solstice],
|
||||
include_directories: include_directories('src'),
|
||||
dependencies: [Equinox]
|
||||
)
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
solstice_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'solstice/RoutingErrorListModel.h',
|
||||
'solstice/RoutingErrorListWidget.h',
|
||||
'solstice/TabRoutingErrorList.h',
|
||||
'solstice/GraphicSolsticeEngine.h',
|
||||
],
|
||||
dependencies: [Equinox],
|
||||
)
|
||||
|
||||
solstice = shared_library(
|
||||
'solstice',
|
||||
|
||||
'Brick.cpp',
|
||||
'RoutingError.cpp',
|
||||
'BrickSweepLine.cpp',
|
||||
'SolsticeEngine.cpp',
|
||||
'ShortCircuitError.cpp',
|
||||
'GraphicSolsticeEngine.cpp',
|
||||
'RoutingErrorListModel.cpp',
|
||||
'DisconnectError.cpp',
|
||||
'RoutingErrorListWidget.cpp',
|
||||
'TabRoutingErrorList.cpp',
|
||||
'RoutingErrorInformations.cpp',
|
||||
|
||||
solstice_mocs,
|
||||
|
||||
dependencies: [Equinox],
|
||||
install: true,
|
||||
)
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit afa06f4446a5e52c732b5b77ea0dbb0549e7899d
|
|
@ -0,0 +1,9 @@
|
|||
subdir('src')
|
||||
subdir('python')
|
||||
|
||||
Unicorn = declare_dependency(
|
||||
link_with: [unicorn],
|
||||
include_directories: include_directories('src'),
|
||||
dependencies: [Katana]
|
||||
)
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
py.install_sources(
|
||||
'initHook.py',
|
||||
subdir: 'coriolis/unicorn',
|
||||
)
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
unicorn_mocs = qt.compile_moc(
|
||||
headers: [
|
||||
'unicorn/UnicornGui.h',
|
||||
'unicorn/OpenCellDialog.h',
|
||||
'unicorn/SaveCellDialog.h',
|
||||
'unicorn/ImportCellDialog.h',
|
||||
'unicorn/ExportCellDialog.h',
|
||||
],
|
||||
dependencies: [Katana, CrlCore],
|
||||
)
|
||||
|
||||
unicorn_py = files([
|
||||
'PyUnicorn.cpp',
|
||||
'PyUnicornGui.cpp',
|
||||
])
|
||||
|
||||
|
||||
unicorn = shared_library(
|
||||
'unicorn',
|
||||
|
||||
'ImportCell.cpp',
|
||||
'OpenCellDialog.cpp',
|
||||
'SaveCellDialog.cpp',
|
||||
'ImportCellDialog.cpp',
|
||||
'ExportCellDialog.cpp',
|
||||
'UnicornGui.cpp',
|
||||
|
||||
unicorn_mocs,
|
||||
unicorn_py,
|
||||
dependencies: [Katana, CrlCore],
|
||||
install: true,
|
||||
)
|
||||
|
||||
py.extension_module(
|
||||
'Unicorn',
|
||||
|
||||
unicorn_py,
|
||||
|
||||
link_with: [unicorn],
|
||||
dependencies: [Katana],
|
||||
install: true,
|
||||
subdir: 'coriolis'
|
||||
)
|
||||
|
Loading…
Reference in New Issue