diff options
Diffstat (limited to 'src/nix')
-rw-r--r-- | src/nix/meson.build | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/nix/meson.build b/src/nix/meson.build new file mode 100644 index 000000000..2585ba3c3 --- /dev/null +++ b/src/nix/meson.build @@ -0,0 +1,119 @@ +generate_manpage_gen = gen_header.process(meson.project_source_root() / 'doc/manual/generate-manpage.nix') + +utils_gen = gen_header.process(meson.project_source_root() / 'doc/manual/utils.nix') + +get_env_gen = gen_header.process('get-env.sh') + +# src/nix/profile.cc includes src/nix/profile.md, which includes "doc/files/profiles.md.gen.hh". +# Unfortunately, https://github.com/mesonbuild/meson/issues/2320. +# "docs/files" isn't a directory hierarchy that already exists somewhere in this source tree, +# and Meson refuses to create targets with specific directory paths. +# So run_command() it is. +# NOTE(Qyriad): This corresponds to the previous buildsystem's `src/nix/doc/files/%.md` rule, +# which as far as I can tell was only used for this file. +run_command( + installcmd, + '-D', + meson.project_source_root() / 'doc/manual/src/command-ref/files/profiles.md', + meson.current_build_dir() / 'doc/files/profiles.md', + check : true, +) +profiles_md_gen = gen_header.process( + meson.current_build_dir() / 'doc/files/profiles.md', + preserve_path_from : meson.current_build_dir(), +) + +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, + get_env_gen, + profiles_md_gen, + nix2_commands_sources, + dependencies : [ + liblixcmd, + liblixutil, + liblixstore, + liblixexpr, + liblixfetchers, + liblixmain, + boehm, + ], + install : true, + # FIXME(Qyriad): is this right? + install_rpath : libdir, +) + +nix_symlinks = [ + 'nix-build', + 'nix-channel', + 'nix-collect-garbage', + 'nix-copy-closure', + 'nix-daemon', + 'nix-env', + 'nix-hash', + 'nix-instantiate', + 'nix-prefetch-url', + 'nix-shell', + 'nix-store', +] + +foreach linkname : nix_symlinks + install_symlink( + linkname, + # TODO(Qyriad): should these continue to be relative symlinks? + pointing_to : 'nix', + install_dir : bindir, + # The 'runtime' tag is what executables default to, which we want to emulate here. + install_tag : 'runtime' + ) +endforeach |