meson: getting the nix command building
Change-Id: If2f4a82b0d23a11a828bb4b305fabe4e30e1e91b
This commit is contained in:
parent
557dc678fd
commit
6fb79d08ae
6 changed files with 184 additions and 14 deletions
13
meson.build
13
meson.build
|
@ -113,6 +113,7 @@ deps += lowdown
|
||||||
#
|
#
|
||||||
# Build-time tools
|
# Build-time tools
|
||||||
#
|
#
|
||||||
|
bash = find_program('bash')
|
||||||
lsof = find_program('lsof')
|
lsof = find_program('lsof')
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -196,14 +197,4 @@ add_project_arguments(
|
||||||
language : 'cpp',
|
language : 'cpp',
|
||||||
)
|
)
|
||||||
|
|
||||||
subdir('src/libutil')
|
subdir('src')
|
||||||
# Load-bearing order. libstore depends on libutil.
|
|
||||||
subdir('src/libstore')
|
|
||||||
# libfetchers depends on libstore.
|
|
||||||
subdir('src/libfetchers')
|
|
||||||
# libexpr depends on libfetchers.
|
|
||||||
subdir('src/libexpr')
|
|
||||||
# libmain depends on libutil and libstore.
|
|
||||||
subdir('src/libmain')
|
|
||||||
# libcmd depends on everything
|
|
||||||
subdir('src/libcmd')
|
|
||||||
|
|
|
@ -28,3 +28,8 @@ libcmd = library(
|
||||||
lowdown,
|
lowdown,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
liblixcmd = declare_dependency(
|
||||||
|
include_directories : '.',
|
||||||
|
link_with : libcmd,
|
||||||
|
)
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
bash = find_program('bash')
|
|
||||||
|
|
||||||
schema_sql_gen = custom_target(
|
schema_sql_gen = custom_target(
|
||||||
input : 'schema.sql',
|
input : 'schema.sql',
|
||||||
output : 'schema.sql.gen.hh',
|
output : 'schema.sql.gen.hh',
|
||||||
|
@ -90,18 +88,24 @@ all_sources += {
|
||||||
'libstore': libstore_sources,
|
'libstore': libstore_sources,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prefix = get_option('prefix')
|
||||||
|
|
||||||
cpp_str_defines = {
|
cpp_str_defines = {
|
||||||
'LSOF': lsof.full_path(),
|
'LSOF': lsof.full_path(),
|
||||||
'NIX_PREFIX': get_option('prefix'),
|
'NIX_PREFIX': get_option('prefix'),
|
||||||
'NIX_STORE_DIR': get_option('store-dir'),
|
'NIX_STORE_DIR': get_option('store-dir'),
|
||||||
'NIX_DATA_DIR': get_option('prefix') / 'share', # FIXME: make separately-configurable
|
'NIX_DATA_DIR': get_option('prefix') / 'share', # FIXME: make separately-configurable
|
||||||
'NIX_STATE_DIR': get_option('prefix') / 'nix', # FIXME: same
|
#'NIX_STATE_DIR': get_option('prefix') / 'nix', # FIXME: same
|
||||||
'NIX_LOG_DIR': get_option('prefix') / 'log' / 'nix', # FIXME: same
|
'NIX_LOG_DIR': get_option('prefix') / 'log' / 'nix', # FIXME: same
|
||||||
'NIX_CONF_DIR': get_option('prefix') / 'etc', # FIXME: same
|
'NIX_CONF_DIR': get_option('prefix') / 'etc', # FIXME: same
|
||||||
'NIX_BIN_DIR': get_option('prefix') / 'bin', # FIXME: same
|
'NIX_BIN_DIR': get_option('prefix') / 'bin', # FIXME: same
|
||||||
'NIX_MAN_DIR': get_option('prefix') / 'share' / 'man', # FIXME: same
|
'NIX_MAN_DIR': get_option('prefix') / 'share' / 'man', # FIXME: same
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cpp_str_defines += {
|
||||||
|
'NIX_STATE_DIR': '/nix/var/nix',
|
||||||
|
}
|
||||||
|
|
||||||
cpp_args = []
|
cpp_args = []
|
||||||
|
|
||||||
foreach name, value : cpp_str_defines
|
foreach name, value : cpp_str_defines
|
||||||
|
|
80
src/meson.build
Normal file
80
src/meson.build
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
# Subcomponents: these link into artifacts themselves, and have interdependencies.
|
||||||
|
|
||||||
|
subdir('libutil')
|
||||||
|
# Load-bearing order. libstore depends on libutil.
|
||||||
|
subdir('libstore')
|
||||||
|
# libfetchers depends on libstore
|
||||||
|
subdir('libfetchers')
|
||||||
|
# libexpr depends on all of the above
|
||||||
|
subdir('libexpr')
|
||||||
|
# libmain depends on libutil and libstore
|
||||||
|
subdir('libmain')
|
||||||
|
# libcmd depends on everything
|
||||||
|
subdir('libcmd')
|
||||||
|
|
||||||
|
|
||||||
|
# The rest of the subdirectories aren't separate components,
|
||||||
|
# just source files in another directory, so we process them here.
|
||||||
|
|
||||||
|
build_remote_sources = files(
|
||||||
|
'build-remote/build-remote.cc',
|
||||||
|
)
|
||||||
|
nix_build_sources = files(
|
||||||
|
'nix-build/nix-build.cc',
|
||||||
|
)
|
||||||
|
nix_channel_sources = files(
|
||||||
|
'nix-channel/nix-channel.cc',
|
||||||
|
)
|
||||||
|
unpack_channel_gen = custom_target(
|
||||||
|
input : 'nix-channel/unpack-channel.nix',
|
||||||
|
output : 'unpack-channel.nix.gen.hh',
|
||||||
|
command : [
|
||||||
|
bash,
|
||||||
|
'-c',
|
||||||
|
'echo \'R"foo(\' | cat - @INPUT@ && echo \')foo"\'',
|
||||||
|
],
|
||||||
|
capture : true,
|
||||||
|
)
|
||||||
|
nix_collect_garbage_sources = files(
|
||||||
|
'nix-collect-garbage/nix-collect-garbage.cc',
|
||||||
|
)
|
||||||
|
nix_copy_closure_sources = files(
|
||||||
|
'nix-copy-closure/nix-copy-closure.cc',
|
||||||
|
)
|
||||||
|
nix_store_sources = files(
|
||||||
|
'nix-store/dotgraph.cc',
|
||||||
|
'nix-store/graphml.cc',
|
||||||
|
'nix-store/nix-store.cc',
|
||||||
|
)
|
||||||
|
|
||||||
|
nix_env_buildenv = custom_target(
|
||||||
|
input : 'nix-env/buildenv.nix',
|
||||||
|
output : 'buildenv.nix.gen.hh',
|
||||||
|
command : [
|
||||||
|
bash,
|
||||||
|
'-c',
|
||||||
|
'echo \'R"foo(\' | cat - @INPUT@ && echo \')foo"\'',
|
||||||
|
],
|
||||||
|
capture : true,
|
||||||
|
)
|
||||||
|
nix_env_sources = files(
|
||||||
|
'nix-env/nix-env.cc',
|
||||||
|
'nix-env/user-env.cc',
|
||||||
|
)
|
||||||
|
|
||||||
|
# Hurray for Meson list flattening!
|
||||||
|
nix2_commands_sources = [
|
||||||
|
build_remote_sources,
|
||||||
|
nix_build_sources,
|
||||||
|
nix_channel_sources,
|
||||||
|
unpack_channel_gen,
|
||||||
|
nix_collect_garbage_sources,
|
||||||
|
nix_copy_closure_sources,
|
||||||
|
nix_store_sources,
|
||||||
|
nix_env_buildenv,
|
||||||
|
nix_env_sources,
|
||||||
|
]
|
||||||
|
|
||||||
|
# Finally, the nix command itself, which all of the other commands are implmented in terms of
|
||||||
|
# as a multicall binary.
|
||||||
|
subdir('nix')
|
4
src/nix-env/meson.build
Normal file
4
src/nix-env/meson.build
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
nix_env_sources = files(
|
||||||
|
'nix-env.cc',
|
||||||
|
'user-env.cc'
|
||||||
|
)
|
86
src/nix/meson.build
Normal file
86
src/nix/meson.build
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
generate_manpage_gen = custom_target(
|
||||||
|
input : meson.project_source_root() / 'doc/manual/generate-manpage.nix',
|
||||||
|
output : 'generate-manpage.nix.gen.hh',
|
||||||
|
command : [
|
||||||
|
bash,
|
||||||
|
'-c',
|
||||||
|
'echo \'R"foo(\' | cat - @INPUT@ && echo \')foo"\'',
|
||||||
|
],
|
||||||
|
capture : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
utils_gen = custom_target(
|
||||||
|
input : meson.project_source_root() / 'doc/manual/utils.nix',
|
||||||
|
output : 'utils.nix.gen.hh',
|
||||||
|
command : [
|
||||||
|
bash,
|
||||||
|
'-c',
|
||||||
|
'echo \'R"foo(\' | cat - @INPUT@ && echo \')foo"\'',
|
||||||
|
],
|
||||||
|
capture : true,
|
||||||
|
)
|
||||||
|
|
||||||
|
nix_sources = files(
|
||||||
|
'add-to-store.cc',
|
||||||
|
'app.cc',
|
||||||
|
'build.cc',
|
||||||
|
'bundle.cc',
|
||||||
|
'cat.cc',
|
||||||
|
'copy.cc',
|
||||||
|
'daemon.cc',
|
||||||
|
'derivation-add.cc',
|
||||||
|
'derivation-show.cc',
|
||||||
|
'derivation.cc',
|
||||||
|
'develop.cc',
|
||||||
|
'diff-closures.cc',
|
||||||
|
'doctor.cc',
|
||||||
|
'dump-path.cc',
|
||||||
|
'edit.cc',
|
||||||
|
'eval.cc',
|
||||||
|
'flake.cc',
|
||||||
|
'fmt.cc',
|
||||||
|
'hash.cc',
|
||||||
|
'log.cc',
|
||||||
|
'ls.cc',
|
||||||
|
'main.cc',
|
||||||
|
'make-content-addressed.cc',
|
||||||
|
'nar.cc',
|
||||||
|
'optimise-store.cc',
|
||||||
|
'path-from-hash-part.cc',
|
||||||
|
'path-info.cc',
|
||||||
|
'ping-store.cc',
|
||||||
|
'prefetch.cc',
|
||||||
|
'profile.cc',
|
||||||
|
'realisation.cc',
|
||||||
|
'registry.cc',
|
||||||
|
'repl.cc',
|
||||||
|
'run.cc',
|
||||||
|
'search.cc',
|
||||||
|
'show-config.cc',
|
||||||
|
'sigs.cc',
|
||||||
|
'store-copy-log.cc',
|
||||||
|
'store-delete.cc',
|
||||||
|
'store-gc.cc',
|
||||||
|
'store-repair.cc',
|
||||||
|
'store.cc',
|
||||||
|
'upgrade-nix.cc',
|
||||||
|
'verify.cc',
|
||||||
|
'why-depends.cc',
|
||||||
|
)
|
||||||
|
|
||||||
|
nix = executable(
|
||||||
|
'nix',
|
||||||
|
nix_sources,
|
||||||
|
generate_manpage_gen,
|
||||||
|
utils_gen,
|
||||||
|
nix2_commands_sources,
|
||||||
|
dependencies : [
|
||||||
|
liblixcmd,
|
||||||
|
liblixutil,
|
||||||
|
liblixstore,
|
||||||
|
liblixexpr,
|
||||||
|
liblixfetchers,
|
||||||
|
liblixmain,
|
||||||
|
boehm,
|
||||||
|
],
|
||||||
|
)
|
Loading…
Reference in a new issue