aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'src/libexpr/meson.build')
-rw-r--r--src/libexpr/meson.build153
1 files changed, 153 insertions, 0 deletions
diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build
new file mode 100644
index 000000000..baac9bb24
--- /dev/null
+++ b/src/libexpr/meson.build
@@ -0,0 +1,153 @@
+parser_tab = custom_target(
+ input : 'parser.y',
+ output : [
+ 'parser-tab.cc',
+ 'parser-tab.hh',
+ ],
+ command : [
+ 'bison',
+ '-v',
+ '-o',
+ '@OUTPUT0@',
+ '@INPUT@',
+ '-d',
+ ],
+ # NOTE(Qyriad): Meson doesn't support installing only part of a custom target, so we add
+ # an install script below which removes parser-tab.cc.
+ install : true,
+ install_dir : includedir / 'nix',
+)
+
+lexer_tab = custom_target(
+ input : [
+ 'lexer.l',
+ parser_tab,
+ ],
+ output : [
+ 'lexer-tab.cc',
+ 'lexer-tab.hh',
+ ],
+ command : [
+ 'flex',
+ '--outfile',
+ '@OUTPUT0@',
+ '--header-file=' + '@OUTPUT1@',
+ '@INPUT0@',
+ ],
+ # NOTE(Qyriad): Meson doesn't support installing only part of a custom target, so we add
+ # an install script below which removes lexer-tab.cc.
+ install : true,
+ install_dir : includedir / 'nix',
+)
+
+# TODO(Qyriad): When the parser and lexer are rewritten this should be removed.
+# NOTE(Qyriad): We do this this way instead of an inline bash or rm command
+# due to subtleties in Meson. Check the comments in cleanup-install.bash for details.
+meson.add_install_script(
+ bash,
+ meson.project_source_root() / 'meson/cleanup-install.bash',
+ '@0@'.format(includedir),
+)
+
+imported_drv_to_derivation_gen = gen_header.process('imported-drv-to-derivation.nix')
+fetchurl_gen = gen_header.process('fetchurl.nix')
+derivation_gen = gen_header.process('primops/derivation.nix', preserve_path_from : meson.current_source_dir())
+call_flake_gen = gen_header.process('flake/call-flake.nix')
+
+libexpr_sources = files(
+ 'attr-path.cc',
+ 'attr-set.cc',
+ 'eval-cache.cc',
+ 'eval-error.cc',
+ 'eval-settings.cc',
+ 'eval.cc',
+ 'function-trace.cc',
+ 'get-drvs.cc',
+ 'json-to-value.cc',
+ 'nixexpr.cc',
+ 'paths.cc',
+ 'primops.cc',
+ 'print-ambiguous.cc',
+ 'print.cc',
+ 'search-path.cc',
+ 'value-to-json.cc',
+ 'value-to-xml.cc',
+ 'flake/config.cc',
+ 'flake/flake.cc',
+ 'flake/flakeref.cc',
+ 'flake/lockfile.cc',
+ 'primops/context.cc',
+ 'primops/fetchClosure.cc',
+ 'primops/fetchMercurial.cc',
+ 'primops/fetchTree.cc',
+ 'primops/fromTOML.cc',
+ 'value/context.cc',
+)
+
+libexpr_headers = files(
+ 'attr-path.hh',
+ 'attr-set.hh',
+ 'eval-cache.hh',
+ 'eval-error.hh',
+ 'eval-inline.hh',
+ 'eval-settings.hh',
+ 'eval.hh',
+ 'flake/flake.hh',
+ 'flake/flakeref.hh',
+ 'flake/lockfile.hh',
+ 'function-trace.hh',
+ 'gc-small-vector.hh',
+ 'get-drvs.hh',
+ 'json-to-value.hh',
+ 'nixexpr.hh',
+ 'parser-state.hh',
+ 'pos-idx.hh',
+ 'pos-table.hh',
+ 'primops.hh',
+ 'print-ambiguous.hh',
+ 'print-options.hh',
+ 'print.hh',
+ 'repl-exit-status.hh',
+ 'search-path.hh',
+ 'symbol-table.hh',
+ 'value/context.hh',
+ 'value-to-json.hh',
+ 'value-to-xml.hh',
+ 'value.hh',
+)
+
+libexpr = library(
+ 'nixexpr',
+ libexpr_sources,
+ parser_tab,
+ lexer_tab,
+ imported_drv_to_derivation_gen,
+ fetchurl_gen,
+ derivation_gen,
+ call_flake_gen,
+ dependencies : [
+ liblixutil,
+ liblixstore,
+ liblixfetchers,
+ boehm,
+ boost,
+ ],
+ # for shared.hh
+ include_directories : [
+ '../libmain',
+ ],
+ install : true,
+ # FIXME(Qyriad): is this right?
+ install_rpath : libdir,
+)
+
+install_headers(
+ libexpr_headers,
+ subdir : 'nix',
+ preserve_path : true,
+)
+
+liblixexpr = declare_dependency(
+ include_directories : include_directories('.'),
+ link_with : libexpr,
+)