Skip to content

Commit 710117f

Browse files
committed
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
1 parent 8213a33 commit 710117f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1308
-132
lines changed

.github/workflows/wheels.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
contents: read
3434
packages: write
3535
outputs:
36-
tag: ${{ steps.meta.outputs.labels || env.FALLBACK_TAG }}
36+
tag: ${{ steps.meta.outputs.tags || env.FALLBACK_TAG }}
3737

3838
steps:
3939
- name: Checkout repository
@@ -131,7 +131,7 @@ jobs:
131131
env:
132132
CIBW_PRERELEASE_PYTHONS: True
133133
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}
134-
CIBW_ENVIRONMENT: USE_CCACHE=1 CCACHE_DIR=/.ccache
134+
CIBW_ENVIRONMENT: USE_CCACHE=1 CCACHE_DIR=/.ccache BOOST_LIBRARYDIR=/usr/lib64/boost169 BOOST_INCLUDEDIR=/usr/include/boost169
135135
CIBW_CONTAINER_ENGINE: "docker; create_args: '--volume=${{ github.workspace }}/.ccache:/.ccache'"
136136
# overriede before-all in pyproject.toml
137137
CIBW_BEFORE_ALL: ""

.gitmodules

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[submodule "coloquinte"]
2-
path = coloquinte
2+
path = subprojects/coloquinte
33
# url = [email protected]:Coloquinte/PlaceRoute.git
44
url = https://github.com/Coloquinte/PlaceRoute.git
55
branch = coriolis-submodule

Dockerfile-manylinux

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ RUN yum -y install epel-release && \
66
RUN yum install -y \
77
qt5-qtbase-devel qt5-qtsvg-devel \
88
rapidjson-devel bison flex doxygen bzip2-devel flex-devel \
9-
boost-devel \
10-
boost-python boost-filesystem \
11-
boost-regex boost-wave \
9+
boost169-devel \
1210
python36-devel libxml2-devel \
1311
qwt-devel \
1412
ccache \

anabatic/meson.build

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
subdir('src')
3+
4+
Anabatic = declare_dependency(
5+
link_with: [anabatic],
6+
include_directories: include_directories('src'),
7+
dependencies: [Etesian, Flute]
8+
)
9+

anabatic/src/meson.build

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
anabatic = shared_library(
2+
'anabatic',
3+
'Constants.cpp',
4+
'Configuration.cpp',
5+
'Matrix.cpp',
6+
'EdgeCapacity.cpp',
7+
'Edge.cpp',
8+
'Edges.cpp',
9+
'GCell.cpp',
10+
'Dijkstra.cpp',
11+
'AutoContact.cpp',
12+
'AutoContactTerminal.cpp',
13+
'AutoContactTurn.cpp',
14+
'AutoContactHTee.cpp',
15+
'AutoContactVTee.cpp',
16+
'AutoSegment.cpp',
17+
'AutoSegments.cpp',
18+
'AutoHorizontal.cpp',
19+
'AutoVertical.cpp',
20+
'Session.cpp',
21+
'NetConstraints.cpp',
22+
'NetOptimals.cpp',
23+
'NetBuilder.cpp',
24+
'NetBuilderM2.cpp',
25+
'NetBuilderHV.cpp',
26+
'NetBuilderVH.cpp',
27+
'NetBuilderHybridVH.cpp',
28+
'ChipTools.cpp',
29+
'LayerAssign.cpp',
30+
'AntennaProtect.cpp',
31+
'PreRouteds.cpp',
32+
'AnabaticEngine.cpp',
33+
34+
dependencies: [Etesian],
35+
install: true,
36+
)
37+
38+
py.extension_module(
39+
'pyanabatic',
40+
'PyStyleFlags.cpp',
41+
'PyAnabatic.cpp',
42+
43+
link_with: [anabatic],
44+
dependencies: [Etesian],
45+
install: true,
46+
subdir: 'coriolis'
47+
)
48+

bootstrap/cmake_modules/FindBootstrap.cmake

-1
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,6 @@ endif()
448448
# "inc_install_dir").
449449
# * pymodule: The name of the Python module (for "import PYMODULE").
450450
# * deplibs: The list of dependencies.
451-
# * inc_install_dir: The directory into which install the includes.
452451
#
453452
macro( add_python_module3 pyCpps pyIncludes pymodule deplibs inc_install_dir )
454453
add_library( ${pymodule} MODULE ${pyCpps} )

bora/meson.build

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
subdir('src')
2+
subdir('python')
3+
4+
Bora = declare_dependency(
5+
link_with: [bora],
6+
include_directories: include_directories('src'),
7+
dependencies: [Katana]
8+
)
9+

bora/python/meson.build

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
py.install_sources(
2+
'initHook.py',
3+
subdir: 'coriolis/bora',
4+
)
5+
6+

bora/src/meson.build

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
bora_mocs = qt.compile_moc(
2+
headers: [
3+
'bora/SlicingDataModel.h',
4+
'bora/SlicingDataWidget.h',
5+
'bora/SlicingPlotWidget.h',
6+
'bora/SlicingWidget.h',
7+
'bora/GraphicBoraEngine.h',
8+
],
9+
dependencies: [Katana, qwt],
10+
)
11+
12+
bora_py = files([
13+
'PyParameterRange.cpp',
14+
'PyStepParameterRange.cpp',
15+
'PyMatrixParameterRange.cpp',
16+
'PySlicingNode.cpp',
17+
'PyDSlicingNode.cpp',
18+
'PyHSlicingNode.cpp',
19+
'PyRHSlicingNode.cpp',
20+
'PyRVSlicingNode.cpp',
21+
'PyVSlicingNode.cpp',
22+
'PyBoraEngine.cpp',
23+
'PyGraphicBoraEngine.cpp',
24+
'PyBora.cpp',
25+
])
26+
27+
28+
bora = shared_library(
29+
'bora',
30+
31+
'BoxSet.cpp',
32+
'NodeSets.cpp',
33+
'ParameterRange.cpp',
34+
'HVSetState.cpp',
35+
'SlicingNode.cpp',
36+
'HVSlicingNode.cpp',
37+
'HSlicingNode.cpp',
38+
'VSlicingNode.cpp',
39+
'DSlicingNode.cpp',
40+
'RHVSlicingNode.cpp',
41+
'RHSlicingNode.cpp',
42+
'RVSlicingNode.cpp',
43+
'ChannelRouting.cpp',
44+
'BoraEngine.cpp',
45+
'Pareto.cpp',
46+
'SlicingDataModel.cpp',
47+
'SlicingDataWidget.cpp',
48+
'SlicingPlotWidget.cpp',
49+
'SlicingWidget.cpp',
50+
'GraphicBoraEngine.cpp',
51+
52+
bora_mocs,
53+
bora_py,
54+
dependencies: [Katana, qwt],
55+
install: true,
56+
)
57+
58+
py.extension_module(
59+
'Bora',
60+
61+
bora_py,
62+
63+
link_with: [bora],
64+
dependencies: [Katana, qwt],
65+
install: true,
66+
subdir: 'coriolis'
67+
)
68+

coloquinte

-1
This file was deleted.

crlcore/meson.build

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
subdir('src/ccore')
2+
subdir('src/LibraryManager')
3+
subdir('src/cyclop')
4+
subdir('src/pyCRL')
5+
subdir('python')
6+
7+
CrlCore = declare_dependency(
8+
link_with: [crlcore, librarymanager, pycrlcore],
9+
include_directories: [crlcore_includes, pyCRL_includes, librarymanager_includes],
10+
dependencies: [qt_deps, py_deps, boost, rapidjson, Hurricane]
11+
)
12+

crlcore/python/meson.build

+183
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
2+
py.install_sources(
3+
'helpers/__init__.py',
4+
'helpers/io.py',
5+
'helpers/utils.py',
6+
'helpers/overlay.py',
7+
'helpers/analogtechno.py',
8+
'helpers/technology.py',
9+
subdir: 'coriolis/helpers',
10+
)
11+
12+
py.install_sources(
13+
'technos/common/__init__.py',
14+
'technos/common/analog.py',
15+
'technos/common/colors.py',
16+
'technos/common/devices.py',
17+
'technos/common/display.py',
18+
'technos/common/etesian.py',
19+
'technos/common/kite.py',
20+
'technos/common/misc.py',
21+
'technos/common/patterns.py',
22+
'technos/common/stratus1.py',
23+
'technos/common/technology.py',
24+
subdir: 'coriolis/technos/common',
25+
)
26+
27+
py.install_sources(
28+
'technos/node180/__init__.py',
29+
subdir: 'coriolis/technos/node180',
30+
)
31+
32+
py.install_sources(
33+
'technos/node180/gf180mcu/__init__.py',
34+
'technos/node180/gf180mcu/mcu9t5v0.py',
35+
'technos/node180/gf180mcu/techno.py',
36+
subdir: 'coriolis/technos/node180/gf180mcu',
37+
)
38+
39+
py.install_sources(
40+
'technos/node180/scn6m_deep_09/__init__.py',
41+
'technos/node180/scn6m_deep_09/alliance.py',
42+
'technos/node180/scn6m_deep_09/analog.py',
43+
'technos/node180/scn6m_deep_09/devices.py',
44+
'technos/node180/scn6m_deep_09/display.py',
45+
'technos/node180/scn6m_deep_09/dtr_scn6m_deep_09.py',
46+
'technos/node180/scn6m_deep_09/etesian.py',
47+
'technos/node180/scn6m_deep_09/kite.py',
48+
'technos/node180/scn6m_deep_09/misc.py',
49+
'technos/node180/scn6m_deep_09/patterns.py',
50+
'technos/node180/scn6m_deep_09/plugins.py',
51+
'technos/node180/scn6m_deep_09/stratus1.py',
52+
'technos/node180/scn6m_deep_09/technology.py',
53+
subdir: 'coriolis/technos/node180/scn6m_deep_09',
54+
)
55+
56+
py.install_sources(
57+
'technos/node45/__init__.py',
58+
subdir: 'coriolis/technos/node45',
59+
)
60+
61+
62+
py.install_sources(
63+
'technos/node45/freepdk45/__init__.py',
64+
'technos/node45/freepdk45/alliance.py',
65+
'technos/node45/freepdk45/analog.py',
66+
'technos/node45/freepdk45/devices.py',
67+
'technos/node45/freepdk45/display.py',
68+
'technos/node45/freepdk45/etesian.py',
69+
'technos/node45/freepdk45/kite.py',
70+
'technos/node45/freepdk45/misc.py',
71+
'technos/node45/freepdk45/patterns.py',
72+
'technos/node45/freepdk45/plugins.py',
73+
'technos/node45/freepdk45/stratus1.py',
74+
'technos/node45/freepdk45/technology.py',
75+
subdir: 'coriolis/technos/node45/freepdk45',
76+
)
77+
78+
py.install_sources(
79+
'technos/node600/__init__.py',
80+
subdir: 'coriolis/technos/node600',
81+
)
82+
83+
py.install_sources(
84+
'technos/node600/phenitec/__init__.py',
85+
'technos/node600/phenitec/alliance.py',
86+
'technos/node600/phenitec/analog.py',
87+
'technos/node600/phenitec/devices.py',
88+
'technos/node600/phenitec/display.py',
89+
'technos/node600/phenitec/etesian.py',
90+
'technos/node600/phenitec/kite.py',
91+
'technos/node600/phenitec/misc.py',
92+
'technos/node600/phenitec/patterns.py',
93+
'technos/node600/phenitec/plugins.py',
94+
'technos/node600/phenitec/stratus1.py',
95+
'technos/node600/phenitec/technology.py',
96+
subdir: 'coriolis/technos/node600/phenitec',
97+
)
98+
99+
py.install_sources(
100+
'technos/symbolic/__init__.py',
101+
subdir: 'coriolis/technos/symbolic',
102+
)
103+
104+
py.install_sources(
105+
'technos/symbolic/cmos/__init__.py',
106+
'technos/symbolic/cmos/alliance.py',
107+
'technos/symbolic/cmos/analog.py',
108+
'technos/symbolic/cmos/display.py',
109+
'technos/symbolic/cmos/etesian.py',
110+
'technos/symbolic/cmos/kite.py',
111+
'technos/symbolic/cmos/misc.py',
112+
'technos/symbolic/cmos/patterns.py',
113+
'technos/symbolic/cmos/plugins.py',
114+
'technos/symbolic/cmos/stratus1.py',
115+
'technos/symbolic/cmos/stratus2sxlib.xml',
116+
'technos/symbolic/cmos/technology.py',
117+
subdir: 'coriolis/technos/symbolic/cmos',
118+
)
119+
120+
py.install_sources(
121+
'technos/symbolic/cmos45/__init__.py',
122+
'technos/symbolic/cmos45/alliance.py',
123+
'technos/symbolic/cmos45/analog.py',
124+
'technos/symbolic/cmos45/display.py',
125+
'technos/symbolic/cmos45/etesian.py',
126+
'technos/symbolic/cmos45/kite.py',
127+
'technos/symbolic/cmos45/misc.py',
128+
'technos/symbolic/cmos45/patterns.py',
129+
'technos/symbolic/cmos45/plugins.py',
130+
'technos/symbolic/cmos45/stratus1.py',
131+
'technos/symbolic/cmos45/technology.py',
132+
subdir: 'coriolis/technos/symbolic/cmos45',
133+
)
134+
135+
py.install_sources(
136+
'technos/symbolic/ispd05/alliance.conf',
137+
'technos/symbolic/ispd05/analog.conf',
138+
'technos/symbolic/ispd05/display.conf',
139+
'technos/symbolic/ispd05/etesian.conf',
140+
'technos/symbolic/ispd05/hMetis.conf',
141+
'technos/symbolic/ispd05/kite.conf',
142+
'technos/symbolic/ispd05/mauka.conf',
143+
'technos/symbolic/ispd05/misc.conf',
144+
'technos/symbolic/ispd05/nimbus.conf',
145+
'technos/symbolic/ispd05/patterns.conf',
146+
'technos/symbolic/ispd05/plugins.conf',
147+
'technos/symbolic/ispd05/stratus1.conf',
148+
'technos/symbolic/ispd05/technology.conf',
149+
subdir: 'coriolis/technos/symbolic/ispd05',
150+
)
151+
152+
py.install_sources(
153+
'technos/symbolic/lcmos/__init__.py',
154+
'technos/symbolic/lcmos/alliance.py',
155+
'technos/symbolic/lcmos/analog.py',
156+
'technos/symbolic/lcmos/display.py',
157+
'technos/symbolic/lcmos/etesian.py',
158+
'technos/symbolic/lcmos/kite.py',
159+
'technos/symbolic/lcmos/misc.py',
160+
'technos/symbolic/lcmos/patterns.py',
161+
'technos/symbolic/lcmos/plugins.py',
162+
'technos/symbolic/lcmos/stratus1.py',
163+
'technos/symbolic/lcmos/technology.py',
164+
subdir: 'coriolis/technos/symbolic/lcmos',
165+
)
166+
167+
py.install_sources(
168+
'technos/symbolic/vsc200/alliance.conf',
169+
'technos/symbolic/vsc200/display.conf',
170+
'technos/symbolic/vsc200/etesian.conf',
171+
'technos/symbolic/vsc200/hMetis.conf',
172+
'technos/symbolic/vsc200/kite.conf',
173+
'technos/symbolic/vsc200/mauka.conf',
174+
'technos/symbolic/vsc200/misc.conf',
175+
'technos/symbolic/vsc200/nimbus.conf',
176+
'technos/symbolic/vsc200/patterns.conf',
177+
'technos/symbolic/vsc200/plugins.conf',
178+
'technos/symbolic/vsc200/stratus1.conf',
179+
'technos/symbolic/vsc200/technology.conf',
180+
subdir: 'coriolis/technos/symbolic/vsc200',
181+
)
182+
183+

0 commit comments

Comments
 (0)