diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 446eb151..10c74b05 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -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: "" diff --git a/.gitmodules b/.gitmodules index 9dfac7a0..363ca7a0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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 diff --git a/Dockerfile-manylinux b/Dockerfile-manylinux index a702b8b8..4818a807 100644 --- a/Dockerfile-manylinux +++ b/Dockerfile-manylinux @@ -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 \ diff --git a/anabatic/meson.build b/anabatic/meson.build new file mode 100644 index 00000000..52474779 --- /dev/null +++ b/anabatic/meson.build @@ -0,0 +1,9 @@ + +subdir('src') + +Anabatic = declare_dependency( + link_with: [anabatic], + include_directories: include_directories('src'), + dependencies: [Etesian, Flute] +) + diff --git a/anabatic/src/meson.build b/anabatic/src/meson.build new file mode 100644 index 00000000..e614c485 --- /dev/null +++ b/anabatic/src/meson.build @@ -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' +) + diff --git a/bootstrap/cmake_modules/FindBootstrap.cmake b/bootstrap/cmake_modules/FindBootstrap.cmake index dceab06d..a7756d63 100644 --- a/bootstrap/cmake_modules/FindBootstrap.cmake +++ b/bootstrap/cmake_modules/FindBootstrap.cmake @@ -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} ) diff --git a/bora/meson.build b/bora/meson.build new file mode 100644 index 00000000..393816fb --- /dev/null +++ b/bora/meson.build @@ -0,0 +1,9 @@ +subdir('src') +subdir('python') + +Bora = declare_dependency( + link_with: [bora], + include_directories: include_directories('src'), + dependencies: [Katana] +) + diff --git a/bora/python/meson.build b/bora/python/meson.build new file mode 100644 index 00000000..45ad7063 --- /dev/null +++ b/bora/python/meson.build @@ -0,0 +1,6 @@ +py.install_sources( + 'initHook.py', + subdir: 'coriolis/bora', +) + + diff --git a/bora/src/meson.build b/bora/src/meson.build new file mode 100644 index 00000000..7ef45033 --- /dev/null +++ b/bora/src/meson.build @@ -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' +) + diff --git a/coloquinte b/coloquinte deleted file mode 160000 index 97bb781b..00000000 --- a/coloquinte +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 97bb781ba363303fd6b7254c717f621b137b89e3 diff --git a/crlcore/meson.build b/crlcore/meson.build new file mode 100644 index 00000000..0f32af92 --- /dev/null +++ b/crlcore/meson.build @@ -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] +) + diff --git a/crlcore/python/meson.build b/crlcore/python/meson.build new file mode 100644 index 00000000..e5dcfab0 --- /dev/null +++ b/crlcore/python/meson.build @@ -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', +) + + diff --git a/crlcore/src/LibraryManager/meson.build b/crlcore/src/LibraryManager/meson.build new file mode 100644 index 00000000..fd0a7e83 --- /dev/null +++ b/crlcore/src/LibraryManager/meson.build @@ -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, +) + + diff --git a/crlcore/src/ccore/meson.build b/crlcore/src/ccore/meson.build new file mode 100644 index 00000000..1bf3a4f3 --- /dev/null +++ b/crlcore/src/ccore/meson.build @@ -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, +) + + diff --git a/crlcore/src/cyclop/meson.build b/crlcore/src/cyclop/meson.build new file mode 100644 index 00000000..9ae37fbd --- /dev/null +++ b/crlcore/src/cyclop/meson.build @@ -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 + ) diff --git a/crlcore/src/pyCRL/meson.build b/crlcore/src/pyCRL/meson.build index 8b096d12..6efdb891 100644 --- a/crlcore/src/pyCRL/meson.build +++ b/crlcore/src/pyCRL/meson.build @@ -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 +) diff --git a/cumulus/meson.build b/cumulus/meson.build new file mode 100644 index 00000000..4544bb20 --- /dev/null +++ b/cumulus/meson.build @@ -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') + + + + diff --git a/cumulus/src/designflow/meson.build b/cumulus/src/designflow/meson.build new file mode 100644 index 00000000..0eca0a58 --- /dev/null +++ b/cumulus/src/designflow/meson.build @@ -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', +]) diff --git a/cumulus/src/meson.build b/cumulus/src/meson.build new file mode 100644 index 00000000..00e6a9a0 --- /dev/null +++ b/cumulus/src/meson.build @@ -0,0 +1,5 @@ +cumulus = files([ + '__init__.py' +]) + + diff --git a/cumulus/src/plugins/block/meson.build b/cumulus/src/plugins/block/meson.build new file mode 100644 index 00000000..90f4c203 --- /dev/null +++ b/cumulus/src/plugins/block/meson.build @@ -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', +]) diff --git a/cumulus/src/plugins/chip/meson.build b/cumulus/src/plugins/chip/meson.build new file mode 100644 index 00000000..7e6895f0 --- /dev/null +++ b/cumulus/src/plugins/chip/meson.build @@ -0,0 +1,10 @@ +chip = files([ + '__init__.py', + 'chip.py', + 'configuration.py', + 'constants.py', + 'corona.py', + 'pads.py', + 'power.py', + 'powerplane.py', +]) diff --git a/cumulus/src/plugins/core2chip/meson.build b/cumulus/src/plugins/core2chip/meson.build new file mode 100644 index 00000000..19b54a45 --- /dev/null +++ b/cumulus/src/plugins/core2chip/meson.build @@ -0,0 +1,10 @@ +core2chip = files([ + '__init__.py', + 'cmos.py', + 'core2chip.py', + 'libresocio.py', + 'niolib.py', + 'phlib.py', + 'phlib80.py', + 'sky130.py', +]) diff --git a/cumulus/src/plugins/harness/meson.build b/cumulus/src/plugins/harness/meson.build new file mode 100644 index 00000000..a9df2629 --- /dev/null +++ b/cumulus/src/plugins/harness/meson.build @@ -0,0 +1,4 @@ +harness = files([ + '__init__.py', + 'pads.py', +]) diff --git a/cumulus/src/plugins/macro/meson.build b/cumulus/src/plugins/macro/meson.build new file mode 100644 index 00000000..d9b49c16 --- /dev/null +++ b/cumulus/src/plugins/macro/meson.build @@ -0,0 +1,4 @@ +macro = files([ + '__init__.py', + 'macro.py', +]) diff --git a/cumulus/src/plugins/meson.build b/cumulus/src/plugins/meson.build new file mode 100644 index 00000000..285226d7 --- /dev/null +++ b/cumulus/src/plugins/meson.build @@ -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', +]) diff --git a/cumulus/src/plugins/sram/meson.build b/cumulus/src/plugins/sram/meson.build new file mode 100644 index 00000000..301ae542 --- /dev/null +++ b/cumulus/src/plugins/sram/meson.build @@ -0,0 +1,7 @@ +sram = files([ + '__init__.py', + 'sram.py', + 'sram_256x32.py', + 'sramplacer1.py', + 'sramplacer2.py', +]) diff --git a/cumulus/src/tools/meson.build b/cumulus/src/tools/meson.build new file mode 100644 index 00000000..0369a32c --- /dev/null +++ b/cumulus/src/tools/meson.build @@ -0,0 +1,5 @@ +tools = files([ + 'blif2vst.py', + 'px2mpx.py', + 'yosys.py', +]) diff --git a/equinox/meson.build b/equinox/meson.build new file mode 100644 index 00000000..98348d7b --- /dev/null +++ b/equinox/meson.build @@ -0,0 +1,8 @@ +subdir('src') + +Equinox = declare_dependency( + link_with: [equinox], + include_directories: [equinox_includes], + dependencies: [CrlCore] +) + diff --git a/equinox/src/meson.build b/equinox/src/meson.build new file mode 100644 index 00000000..d20daae4 --- /dev/null +++ b/equinox/src/meson.build @@ -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, +) + diff --git a/etesian/meson.build b/etesian/meson.build new file mode 100644 index 00000000..0a58bdad --- /dev/null +++ b/etesian/meson.build @@ -0,0 +1,8 @@ +subdir('src') + +Etesian = declare_dependency( + link_with: [etesian], + include_directories: include_directories('src'), + dependencies: [Hurricane, CrlCore, Coloquinte] +) + diff --git a/etesian/src/etesian/EtesianEngine.h b/etesian/src/etesian/EtesianEngine.h index 01269b90..03af530a 100644 --- a/etesian/src/etesian/EtesianEngine.h +++ b/etesian/src/etesian/EtesianEngine.h @@ -18,7 +18,7 @@ #include #include #include -#include "coloquinte/coloquinte.hpp" +#include "coloquinte.hpp" #include "hurricane/Timer.h" #include "hurricane/Name.h" diff --git a/etesian/src/meson.build b/etesian/src/meson.build new file mode 100644 index 00000000..ee63892d --- /dev/null +++ b/etesian/src/meson.build @@ -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' +) + diff --git a/flute/meson.build b/flute/meson.build new file mode 100644 index 00000000..b97036a4 --- /dev/null +++ b/flute/meson.build @@ -0,0 +1,8 @@ +subdir('src/3.1/') + +Flute = declare_dependency( + link_with: [flute], + include_directories: include_directories('src/3.1'), + dependencies: [Hurricane, CrlCore] +) + diff --git a/flute/src/3.1/meson.build b/flute/src/3.1/meson.build new file mode 100644 index 00000000..5d8abf49 --- /dev/null +++ b/flute/src/3.1/meson.build @@ -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' +) diff --git a/hurricane/meson.build b/hurricane/meson.build index 5e588813..2c055560 100644 --- a/hurricane/meson.build +++ b/hurricane/meson.build @@ -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') diff --git a/hurricane/src/analog/meson.build b/hurricane/src/analog/meson.build index 92e7a041..771ddbbe 100644 --- a/hurricane/src/analog/meson.build +++ b/hurricane/src/analog/meson.build @@ -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' ) - - diff --git a/hurricane/src/configuration/meson.build b/hurricane/src/configuration/meson.build index d6d7339b..ee903ce1 100644 --- a/hurricane/src/configuration/meson.build +++ b/hurricane/src/configuration/meson.build @@ -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' ) diff --git a/hurricane/src/hurricane/meson.build b/hurricane/src/hurricane/meson.build index 10378683..e78211dc 100644 --- a/hurricane/src/hurricane/meson.build +++ b/hurricane/src/hurricane/meson.build @@ -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, ) diff --git a/hurricane/src/isobar/hurricane/isobar/ProxyProperty.h b/hurricane/src/isobar/hurricane/isobar/ProxyProperty.h index 0d752bc6..5cd6a49b 100644 --- a/hurricane/src/isobar/hurricane/isobar/ProxyProperty.h +++ b/hurricane/src/isobar/hurricane/isobar/ProxyProperty.h @@ -50,7 +50,7 @@ using namespace Hurricane; void* getShadow () const { return _shadow; }; void* getShadowMember () const { return (void*)((unsigned long)_shadow+_offset); }; template - DBoType* getAsType () { return dynamic_cast(_owner); }; + DBoType* getAsType () { return dynamic_cast(_owner); } public: virtual Name getName () const { return getPropertyName(); } virtual void onCapturedBy ( DBo* owner ); diff --git a/hurricane/src/isobar/meson.build b/hurricane/src/isobar/meson.build index 751fa6f2..ddb7fdf2 100644 --- a/hurricane/src/isobar/meson.build +++ b/hurricane/src/isobar/meson.build @@ -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, ) diff --git a/hurricane/src/meson.build b/hurricane/src/meson.build index 96ceb982..fb9da920 100644 --- a/hurricane/src/meson.build +++ b/hurricane/src/meson.build @@ -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] +) + diff --git a/hurricane/src/utilities/meson.build b/hurricane/src/utilities/meson.build index 5f0fe126..6367d4a0 100644 --- a/hurricane/src/utilities/meson.build +++ b/hurricane/src/utilities/meson.build @@ -1,7 +1,8 @@ -utils = shared_library( +utilities = shared_library( 'utils', 'Path.cpp', 'Dots.cpp', - link_with: hurricane + link_with: hurricane, + install: true, ) diff --git a/hurricane/src/viewer/meson.build b/hurricane/src/viewer/meson.build index a2be133b..53f21e02 100644 --- a/hurricane/src/viewer/meson.build +++ b/hurricane/src/viewer/meson.build @@ -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' ) - diff --git a/karakaze/meson.build b/karakaze/meson.build new file mode 100644 index 00000000..4d5f338f --- /dev/null +++ b/karakaze/meson.build @@ -0,0 +1 @@ +subdir('python') diff --git a/karakaze/python/meson.build b/karakaze/python/meson.build new file mode 100644 index 00000000..abd983aa --- /dev/null +++ b/karakaze/python/meson.build @@ -0,0 +1,9 @@ +py.install_sources( + '__init__.py', + 'oceane.py', + 'analogdesign.py', + + subdir: 'coriolis/karakaze', +) + + diff --git a/katana/meson.build b/katana/meson.build new file mode 100644 index 00000000..bd4f3dd7 --- /dev/null +++ b/katana/meson.build @@ -0,0 +1,9 @@ +subdir('src') +subdir('python') + +Katana = declare_dependency( + link_with: [katana], + include_directories: include_directories('src'), + dependencies: [Anabatic] +) + diff --git a/katana/python/meson.build b/katana/python/meson.build new file mode 100644 index 00000000..11c8e317 --- /dev/null +++ b/katana/python/meson.build @@ -0,0 +1,6 @@ +py.install_sources( + 'initHook.py', + subdir: 'coriolis/katana', +) + + diff --git a/katana/src/meson.build b/katana/src/meson.build new file mode 100644 index 00000000..df56d9db --- /dev/null +++ b/katana/src/meson.build @@ -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' +) + diff --git a/lefdef/meson.build b/lefdef/meson.build new file mode 100644 index 00000000..1acdf1a1 --- /dev/null +++ b/lefdef/meson.build @@ -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 +) diff --git a/lefdef/src/def/meson.build b/lefdef/src/def/meson.build new file mode 100644 index 00000000..0d037bd4 --- /dev/null +++ b/lefdef/src/def/meson.build @@ -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') diff --git a/lefdef/src/lef/meson.build b/lefdef/src/lef/meson.build new file mode 100644 index 00000000..3cb80ceb --- /dev/null +++ b/lefdef/src/lef/meson.build @@ -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') diff --git a/meson.build b/meson.build index acc10030..2a4510bd 100644 --- a/meson.build +++ b/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') + diff --git a/meson.options b/meson.options new file mode 100644 index 00000000..291d9c58 --- /dev/null +++ b/meson.options @@ -0,0 +1 @@ +option('check-database', type : 'boolean', value : false, description: 'Build with database checking enabled. Very slow!') diff --git a/oroshi/meson.build b/oroshi/meson.build new file mode 100644 index 00000000..d9f0ed5a --- /dev/null +++ b/oroshi/meson.build @@ -0,0 +1,6 @@ +subdir('python') + +Oroshi = declare_dependency( + dependencies: [CrlCore] +) + diff --git a/oroshi/python/meson.build b/oroshi/python/meson.build new file mode 100644 index 00000000..d3a76d40 --- /dev/null +++ b/oroshi/python/meson.build @@ -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', +) + + diff --git a/pyproject.toml b/pyproject.toml index bca07dbd..133dc9c9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ name = "coriolis-eda" version = "2.5.5" description = "Place and Route for semiconductors" -authors = ["Jean-Paul Chaput "] +authors = [ { name = "Coriolis EDA Contributers" } ] readme = "README.rst" homepage = "https://github.com/lip6/coriolis" repository = "https://github.com/lip6/coriolis" diff --git a/solstice/meson.build b/solstice/meson.build new file mode 100644 index 00000000..60a53e89 --- /dev/null +++ b/solstice/meson.build @@ -0,0 +1,8 @@ +subdir('src') + +Solstice = declare_dependency( + link_with: [solstice], + include_directories: include_directories('src'), + dependencies: [Equinox] +) + diff --git a/solstice/src/meson.build b/solstice/src/meson.build new file mode 100644 index 00000000..30161e5f --- /dev/null +++ b/solstice/src/meson.build @@ -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, +) + diff --git a/subprojects/coloquinte b/subprojects/coloquinte new file mode 160000 index 00000000..afa06f44 --- /dev/null +++ b/subprojects/coloquinte @@ -0,0 +1 @@ +Subproject commit afa06f4446a5e52c732b5b77ea0dbb0549e7899d diff --git a/unicorn/meson.build b/unicorn/meson.build new file mode 100644 index 00000000..772c4f58 --- /dev/null +++ b/unicorn/meson.build @@ -0,0 +1,9 @@ +subdir('src') +subdir('python') + +Unicorn = declare_dependency( + link_with: [unicorn], + include_directories: include_directories('src'), + dependencies: [Katana] +) + diff --git a/unicorn/python/meson.build b/unicorn/python/meson.build new file mode 100644 index 00000000..5cae201c --- /dev/null +++ b/unicorn/python/meson.build @@ -0,0 +1,6 @@ +py.install_sources( + 'initHook.py', + subdir: 'coriolis/unicorn', +) + + diff --git a/unicorn/src/meson.build b/unicorn/src/meson.build new file mode 100644 index 00000000..b2ed2211 --- /dev/null +++ b/unicorn/src/meson.build @@ -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' +) +