Skip to content

Commit 9e8a77a

Browse files
committed
Subprojects can use meson.add_dist_script() if meson.version() >= 0.58.0
* meson.build: * MSVC_NMake/meson.build: * docs/manual/meson.build: * docs/reference/meson.build: * sigc++/meson.build: Call add_dist_script() in a subproject, if meson.version() >= 0.58.0. * tools/handle-built-files.py: * tools/tutorial-custom-cmd.py: Use MESON_PROJECT_DIST_ROOT if it exists, else MESON_DIST_ROOT. It exists if meson.version() >= 0.58.0.
1 parent ff534ac commit 9e8a77a

File tree

7 files changed

+27
-22
lines changed

7 files changed

+27
-22
lines changed

MSVC_NMake/meson.build

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# MSVC_NMake
22

3-
# Input: pkg_conf_data, sigcxxconfig_h, project_build_root, python3
3+
# Input: pkg_conf_data, sigcxxconfig_h, project_build_root, python3,
4+
# can_add_dist_script
45
# Output: sigc_rc
56

67
sigc_rc = configure_file(
@@ -19,10 +20,8 @@ configure_file(
1920
untracked_msvc_nmake = 'untracked' / 'MSVC_NMake'
2021
handle_built_files = project_source_root / 'tools' / 'handle-built-files.py'
2122

22-
if not meson.is_subproject()
23+
if can_add_dist_script
2324
# Distribute built files.
24-
# (add_dist_script() is not allowed in a subproject)
25-
2625
meson.add_dist_script(
2726
python3.path(), handle_built_files, 'dist_gen_msvc_files',
2827
meson.current_build_dir(),

docs/manual/meson.build

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# docs/manual
22

33
# input: install_datadir, sigcxx_pcname, tutorial_custom_cmd, python3,
4-
# build_documentation, install_docdir
4+
# build_documentation, install_docdir, can_add_dist_script
55
# output: can_parse_and_validate, build_pdf_by_default, can_build_pdf,
66
# install_tutorialdir
77

@@ -82,9 +82,8 @@ if can_build_pdf
8282
)
8383
endif
8484

85-
if not meson.is_subproject()
85+
if can_add_dist_script
8686
# Distribute built files.
87-
# (add_dist_script() is not allowed in a subproject)
8887
meson.add_dist_script(
8988
python3.path(), tutorial_custom_cmd, 'dist_doc',
9089
doc_dist_dir,

docs/reference/meson.build

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Input: built_files_root, project_source_root, sigcxx_pcname,
44
# sigcxx_api_version, build_documentation, source_h_files,
55
# built_h_files, install_datadir, python3, doc_reference,
6-
# built_h_file_targets
6+
# built_h_file_targets, can_add_dist_script
77
# Output: install_docdir, install_devhelpdir, tag_file
88

99
tag_file_modules = [
@@ -139,9 +139,8 @@ meson.add_install_script(
139139
docinstall_flags
140140
)
141141

142-
if not meson.is_subproject()
142+
if can_add_dist_script
143143
# Distribute built files and files copied by mm-common-get.
144-
# (add_dist_script() is not allowed in a subproject)
145144
meson.add_dist_script(
146145
python3.path(), doc_reference, 'dist_doc',
147146
doctool_dir,

meson.build

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -220,29 +220,32 @@ sigcxxconfig_h = configure_file(
220220
install_dir: install_includeconfigdir,
221221
)
222222

223+
# add_dist_script() is not allowed in a subproject if meson.version() < 0.58.0.
224+
can_add_dist_script = not meson.is_subproject() or meson.version().version_compare('>= 0.58.0')
225+
223226
subdir('MSVC_NMake')
224227
subdir('sigc++')
225228
subdir('examples')
226229
subdir('tests')
227230
subdir('docs/reference')
228231
subdir('docs/manual')
229232

230-
if not meson.is_subproject()
233+
if can_add_dist_script
231234
# Add a ChangeLog file to the distribution directory.
232-
# (add_dist_script() is not allowed in a subproject)
233235
meson.add_dist_script(
234236
python3.path(), dist_changelog,
235237
project_source_root,
236238
)
237239
# Add build scripts to the distribution directory, and delete .gitignore
238-
# files and an empty $MESON_DIST_ROOT/build/ directory.
240+
# files and an empty $MESON_PROJECT_DIST_ROOT/build/ directory.
239241
meson.add_dist_script(
240242
python3.path(), dist_build_scripts,
241243
project_source_root,
242244
'untracked' / 'build_scripts',
243245
)
244-
else
245-
# This is a subproject.
246+
endif
247+
248+
if meson.is_subproject()
246249
sigcxx_dep = declare_dependency(
247250
dependencies: sigcxx_own_dep,
248251
variables: {

sigc++/meson.build

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Input: sigcxx_build_dep, sigcxx_pcname, sigcxx_libversion, sigcxx_api_version,
44
# install_includedir, project_source_root, sigc_res, python3,
5-
# handle_built_files, maintainer_mode
5+
# handle_built_files, maintainer_mode, can_add_dist_script
66
# Output: source_h_files, built_h_files, sigcxx_own_dep, built_files_root,
77
# built_h_file_targets
88

@@ -173,9 +173,8 @@ meson.add_install_script(
173173
built_h_files,
174174
)
175175

176-
if not meson.is_subproject()
176+
if can_add_dist_script
177177
# Distribute built files.
178-
# (add_dist_script() is not allowed in a subproject)
179178
meson.add_dist_script(
180179
python3.path(), handle_built_files, 'dist_built_files',
181180
built_h_cc_dir,

tools/handle-built-files.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,12 @@ def dist_built_files(is_msvc_files=False):
6969
# <built_h_cc_dir> <dist_dir> <built_files>...
7070

7171
# <built_h_cc_dir> is an absolute path in the build directory or source directory.
72-
# <dist_dir> is a distribution directory, relative to MESON_DIST_ROOT.
72+
# <dist_dir> is a distribution directory, relative to MESON_PROJECT_DIST_ROOT.
73+
74+
# MESON_PROJECT_DIST_ROOT is set only if meson.version() >= 0.58.0.
75+
project_dist_root = os.getenv('MESON_PROJECT_DIST_ROOT', os.getenv('MESON_DIST_ROOT'))
7376
built_h_cc_dir = sys.argv[2]
74-
dist_dir_root = os.path.join(os.getenv('MESON_DIST_ROOT'), sys.argv[3])
77+
dist_dir_root = os.path.join(project_dist_root, sys.argv[3])
7578
dist_dir = dist_dir_root
7679

7780
# Distribute .h and .cc files built from .m4 files, or generated MSVC files.

tools/tutorial-custom-cmd.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,14 @@ def dist_doc():
132132
# argv[2] argv[3] argv[4] argv[5]
133133
# <doc_dist_dir> <doc_build_dir> <xml_file> <pdf_file>
134134

135-
# <doc_dist_dir> is a distribution directory, relative to MESON_DIST_ROOT.
135+
# <doc_dist_dir> is a distribution directory, relative to MESON_PROJECT_DIST_ROOT.
136136
# <doc_build_dir> is a relative or absolute path in the build directory.
137137
# <xml_file> is a relative or absolute path in the source directory.
138138
# <pdf_file> is a relative or absolute path in the build directory.
139-
doc_dist_dir = os.path.join(os.getenv('MESON_DIST_ROOT'), sys.argv[2])
139+
140+
# MESON_PROJECT_DIST_ROOT is set only if meson.version() >= 0.58.0.
141+
project_dist_root = os.getenv('MESON_PROJECT_DIST_ROOT', os.getenv('MESON_DIST_ROOT'))
142+
doc_dist_dir = os.path.join(project_dist_root, sys.argv[2])
140143
doc_build_dir = sys.argv[3]
141144
xml_file = sys.argv[4]
142145
pdf_file = sys.argv[5]

0 commit comments

Comments
 (0)