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:
Rob Taylor 2023-08-26 14:31:59 +01:00 committed by Rob Taylor
parent 8213a33fb9
commit 710117f566
62 changed files with 1308 additions and 132 deletions

View File

@ -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: ""

2
.gitmodules vendored
View File

@ -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

View File

@ -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 \

9
anabatic/meson.build Normal file
View File

@ -0,0 +1,9 @@
subdir('src')
Anabatic = declare_dependency(
link_with: [anabatic],
include_directories: include_directories('src'),
dependencies: [Etesian, Flute]
)

48
anabatic/src/meson.build Normal file
View File

@ -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'
)

View File

@ -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} )

9
bora/meson.build Normal file
View File

@ -0,0 +1,9 @@
subdir('src')
subdir('python')
Bora = declare_dependency(
link_with: [bora],
include_directories: include_directories('src'),
dependencies: [Katana]
)

6
bora/python/meson.build Normal file
View File

@ -0,0 +1,6 @@
py.install_sources(
'initHook.py',
subdir: 'coriolis/bora',
)

68
bora/src/meson.build Normal file
View File

@ -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

12
crlcore/meson.build Normal file
View File

@ -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]
)

183
crlcore/python/meson.build Normal file
View File

@ -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',
)

View File

@ -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,
)

View File

@ -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,
)

View File

@ -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
)

View File

@ -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
)

19
cumulus/meson.build Normal file
View File

@ -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')

View File

@ -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',
])

5
cumulus/src/meson.build Normal file
View File

@ -0,0 +1,5 @@
cumulus = files([
'__init__.py'
])

View File

@ -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',
])

View File

@ -0,0 +1,10 @@
chip = files([
'__init__.py',
'chip.py',
'configuration.py',
'constants.py',
'corona.py',
'pads.py',
'power.py',
'powerplane.py',
])

View File

@ -0,0 +1,10 @@
core2chip = files([
'__init__.py',
'cmos.py',
'core2chip.py',
'libresocio.py',
'niolib.py',
'phlib.py',
'phlib80.py',
'sky130.py',
])

View File

@ -0,0 +1,4 @@
harness = files([
'__init__.py',
'pads.py',
])

View File

@ -0,0 +1,4 @@
macro = files([
'__init__.py',
'macro.py',
])

View File

@ -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',
])

View File

@ -0,0 +1,7 @@
sram = files([
'__init__.py',
'sram.py',
'sram_256x32.py',
'sramplacer1.py',
'sramplacer2.py',
])

View File

@ -0,0 +1,5 @@
tools = files([
'blif2vst.py',
'px2mpx.py',
'yosys.py',
])

8
equinox/meson.build Normal file
View File

@ -0,0 +1,8 @@
subdir('src')
Equinox = declare_dependency(
link_with: [equinox],
include_directories: [equinox_includes],
dependencies: [CrlCore]
)

29
equinox/src/meson.build Normal file
View File

@ -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,
)

8
etesian/meson.build Normal file
View File

@ -0,0 +1,8 @@
subdir('src')
Etesian = declare_dependency(
link_with: [etesian],
include_directories: include_directories('src'),
dependencies: [Hurricane, CrlCore, Coloquinte]
)

View File

@ -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"

37
etesian/src/meson.build Normal file
View File

@ -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'
)

8
flute/meson.build Normal file
View File

@ -0,0 +1,8 @@
subdir('src/3.1/')
Flute = declare_dependency(
link_with: [flute],
include_directories: include_directories('src/3.1'),
dependencies: [Hurricane, CrlCore]
)

34
flute/src/3.1/meson.build Normal file
View File

@ -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'
)

View File

@ -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')

View File

@ -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'
)

View File

@ -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'
)

View File

@ -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,
)

View File

@ -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 );

View File

@ -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,
)

View File

@ -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]
)

View File

@ -1,7 +1,8 @@
utils = shared_library(
utilities = shared_library(
'utils',
'Path.cpp',
'Dots.cpp',
link_with: hurricane
link_with: hurricane,
install: true,
)

View File

@ -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'
)

1
karakaze/meson.build Normal file
View File

@ -0,0 +1 @@
subdir('python')

View File

@ -0,0 +1,9 @@
py.install_sources(
'__init__.py',
'oceane.py',
'analogdesign.py',
subdir: 'coriolis/karakaze',
)

9
katana/meson.build Normal file
View File

@ -0,0 +1,9 @@
subdir('src')
subdir('python')
Katana = declare_dependency(
link_with: [katana],
include_directories: include_directories('src'),
dependencies: [Anabatic]
)

View File

@ -0,0 +1,6 @@
py.install_sources(
'initHook.py',
subdir: 'coriolis/katana',
)

72
katana/src/meson.build Normal file
View File

@ -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'
)

43
lefdef/meson.build Normal file
View File

@ -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
)

View File

@ -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')

View File

@ -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')

View File

@ -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')

1
meson.options Normal file
View File

@ -0,0 +1 @@
option('check-database', type : 'boolean', value : false, description: 'Build with database checking enabled. Very slow!')

6
oroshi/meson.build Normal file
View File

@ -0,0 +1,6 @@
subdir('python')
Oroshi = declare_dependency(
dependencies: [CrlCore]
)

22
oroshi/python/meson.build Normal file
View File

@ -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',
)

View File

@ -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"

8
solstice/meson.build Normal file
View File

@ -0,0 +1,8 @@
subdir('src')
Solstice = declare_dependency(
link_with: [solstice],
include_directories: include_directories('src'),
dependencies: [Equinox]
)

31
solstice/src/meson.build Normal file
View File

@ -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

9
unicorn/meson.build Normal file
View File

@ -0,0 +1,9 @@
subdir('src')
subdir('python')
Unicorn = declare_dependency(
link_with: [unicorn],
include_directories: include_directories('src'),
dependencies: [Katana]
)

View File

@ -0,0 +1,6 @@
py.install_sources(
'initHook.py',
subdir: 'coriolis/unicorn',
)

44
unicorn/src/meson.build Normal file
View File

@ -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'
)