nix_generated_headers = [ gen_header.process(meson.project_source_root() / 'doc/manual/generate-manpage.nix'), gen_header.process(meson.project_source_root() / 'doc/manual/utils.nix'), 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, ) nix_generated_headers += 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', '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_headers = files( 'daemon-command.hh', 'hash-command.hh', 'prefetch-command.hh', ) nix = executable( 'nix', nix_sources, legacy_sources, nix_generated_headers, nix_headers, legacy_headers, legacy_generated_headers, include_directories : legacy_include_directories, dependencies : [ libasanoptions, liblixcmd, liblixutil_mstatic, liblixstore_mstatic, liblixexpr_mstatic, liblixfetchers_mstatic, liblixmain, boehm, nlohmann_json, ], cpp_pch : cpp_pch, 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 install_symlink( 'build-remote', pointing_to : bindir / 'nix', install_dir : libexecdir / 'nix', # The 'runtime' tag is what executables default to, which we want to emulate here. install_tag : 'runtime' )