aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/coredata.py28
-rw-r--r--mesonbuild/dependencies/misc.py2
-rw-r--r--mesonbuild/mesonlib.py38
3 files changed, 45 insertions, 23 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
index 0fdac8b..44ea83f 100644
--- a/mesonbuild/coredata.py
+++ b/mesonbuild/coredata.py
@@ -19,7 +19,7 @@ import sys
from pathlib import PurePath
from collections import OrderedDict
from .mesonlib import MesonException
-from .mesonlib import default_libdir, default_libexecdir, default_prefix
+from .mesonlib import default_directories
import ast
version = '0.45.0.dev1'
@@ -392,19 +392,19 @@ builtin_options = {
'buildtype': [UserComboOption, 'Build type to use.', ['plain', 'debug', 'debugoptimized', 'release', 'minsize'], 'debug'],
'strip': [UserBooleanOption, 'Strip targets on install.', False],
'unity': [UserComboOption, 'Unity build.', ['on', 'off', 'subprojects'], 'off'],
- 'prefix': [UserStringOption, 'Installation prefix.', default_prefix()],
- 'libdir': [UserStringOption, 'Library directory.', default_libdir()],
- 'libexecdir': [UserStringOption, 'Library executable directory.', default_libexecdir()],
- 'bindir': [UserStringOption, 'Executable directory.', 'bin'],
- 'sbindir': [UserStringOption, 'System executable directory.', 'sbin'],
- 'includedir': [UserStringOption, 'Header file directory.', 'include'],
- 'datadir': [UserStringOption, 'Data file directory.', 'share'],
- 'mandir': [UserStringOption, 'Manual page directory.', 'share/man'],
- 'infodir': [UserStringOption, 'Info page directory.', 'share/info'],
- 'localedir': [UserStringOption, 'Locale data directory.', 'share/locale'],
- 'sysconfdir': [UserStringOption, 'Sysconf data directory.', 'etc'],
- 'localstatedir': [UserStringOption, 'Localstate data directory.', 'var'],
- 'sharedstatedir': [UserStringOption, 'Architecture-independent data directory.', 'com'],
+ 'prefix': [UserStringOption, 'Installation prefix.', default_directories['prefix']],
+ 'libdir': [UserStringOption, 'Library directory.', default_directories['libdir']],
+ 'libexecdir': [UserStringOption, 'Library executable directory.', default_directories['libexecdir']],
+ 'bindir': [UserStringOption, 'Executable directory.', default_directories['bindir']],
+ 'sbindir': [UserStringOption, 'System executable directory.', default_directories['sbindir']],
+ 'includedir': [UserStringOption, 'Header file directory.', default_directories['includedir']],
+ 'datadir': [UserStringOption, 'Data file directory.', default_directories['datadir']],
+ 'mandir': [UserStringOption, 'Manual page directory.', default_directories['mandir']],
+ 'infodir': [UserStringOption, 'Info page directory.', default_directories['infodir']],
+ 'localedir': [UserStringOption, 'Locale data directory.', default_directories['localedir']],
+ 'sysconfdir': [UserStringOption, 'Sysconf data directory.', default_directories['sysconfdir']],
+ 'localstatedir': [UserStringOption, 'Localstate data directory.', default_directories['localstatedir']],
+ 'sharedstatedir': [UserStringOption, 'Architecture-independent data directory.', default_directories['sharedstatedir']],
'werror': [UserBooleanOption, 'Treat warnings as errors.', False],
'warning_level': [UserComboOption, 'Compiler warning level to use.', ['1', '2', '3'], '1'],
'layout': [UserComboOption, 'Build directory layout.', ['mirror', 'flat'], 'mirror'],
diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py
index 9614f1f..05adf52 100644
--- a/mesonbuild/dependencies/misc.py
+++ b/mesonbuild/dependencies/misc.py
@@ -390,7 +390,7 @@ class BoostDependency(ExternalDependency):
if self.libdir:
libdirs = [self.libdir]
elif self.boost_root is None:
- libdirs = mesonlib.get_library_dirs()
+ libdirs = mesonlib.default_directories['librarydirs']
else:
libdirs = [os.path.join(self.boost_root, 'lib')]
for libdir in libdirs:
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py
index 4871bf7..9d71c7e 100644
--- a/mesonbuild/mesonlib.py
+++ b/mesonbuild/mesonlib.py
@@ -449,7 +449,8 @@ def version_compare_many(vstr1, conditions):
found.append(req)
return not_found == [], not_found, found
-def default_libdir():
+
+def _default_libdir():
if is_debianlike():
try:
pc = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_MULTIARCH'],
@@ -465,14 +466,8 @@ def default_libdir():
return 'lib64'
return 'lib'
-def default_libexecdir():
- # There is no way to auto-detect this, so it must be set at build time
- return 'libexec'
-
-def default_prefix():
- return 'c:/' if is_windows() else '/usr/local'
-def get_library_dirs():
+def _default_library_dirs():
if is_windows():
return ['C:/mingw/lib'] # Fixme
if is_osx():
@@ -500,6 +495,33 @@ def get_library_dirs():
return unixdirs
+# These are mostly documented in builtin_options in coredata.py
+default_directories = {
+ 'prefix': 'c:/' if is_windows() else '/usr/local',
+ 'bindir': 'bin',
+ 'sbindir': 'sbin',
+ 'libdir': _default_libdir(),
+ 'libexecdir': 'libexec',
+ 'datadir': 'share',
+ 'includedir': 'include',
+ 'mandir': 'share/man',
+ 'infodir': 'share/info',
+ 'localedir': 'share/locale',
+ 'sysconfdir': 'etc',
+ 'localstatedir': 'var',
+ 'sharedstatedir': 'com',
+ 'librarydirs': _default_library_dirs(),
+}
+
+
+try:
+ # Allow distros to insert a file that sets its own directories
+ from .distro_directories import default_directories as overrides
+ default_directories.update(overrides)
+except ImportError:
+ pass
+
+
def do_replacement(regex, line, confdata):
missing_variables = set()