about summary refs log tree commit diff
path: root/third_party/nix/src/nix/meson.build
blob: be7ccb1a28a995319de5dedc72b4ab0bb790fea2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# Nix exec build file
#============================================================================




# src files
#============================================================================

src_inc += include_directories('.')

nix_src = files(
    join_paths(meson.source_root(), 'src/nix/add-to-store.cc'),
    join_paths(meson.source_root(), 'src/nix/build.cc'),
    join_paths(meson.source_root(), 'src/nix/cat.cc'),
    join_paths(meson.source_root(), 'src/nix/command.cc'),
    join_paths(meson.source_root(), 'src/nix/copy.cc'),
    join_paths(meson.source_root(), 'src/nix/doctor.cc'),
    join_paths(meson.source_root(), 'src/nix/dump-path.cc'),
    join_paths(meson.source_root(), 'src/nix/edit.cc'),
    join_paths(meson.source_root(), 'src/nix/eval.cc'),
    join_paths(meson.source_root(), 'src/nix/hash.cc'),
    join_paths(meson.source_root(), 'src/nix/installables.cc'),
    join_paths(meson.source_root(), 'src/nix/legacy.cc'),
    join_paths(meson.source_root(), 'src/nix/log.cc'),
    join_paths(meson.source_root(), 'src/nix/ls.cc'),
    join_paths(meson.source_root(), 'src/nix/main.cc'),
    join_paths(meson.source_root(), 'src/nix/optimise-store.cc'),
    join_paths(meson.source_root(), 'src/nix/path-info.cc'),
    join_paths(meson.source_root(), 'src/nix/ping-store.cc'),
    join_paths(meson.source_root(), 'src/nix/progress-bar.cc'),
    join_paths(meson.source_root(), 'src/nix/repl.cc'),
    join_paths(meson.source_root(), 'src/nix/run.cc'),
    join_paths(meson.source_root(), 'src/nix/search.cc'),
    join_paths(meson.source_root(), 'src/nix/show-config.cc'),
    join_paths(meson.source_root(), 'src/nix/show-derivation.cc'),
    join_paths(meson.source_root(), 'src/nix/sigs.cc'),
    join_paths(meson.source_root(), 'src/nix/upgrade-nix.cc'),
    join_paths(meson.source_root(), 'src/nix/verify.cc'),
    join_paths(meson.source_root(), 'src/nix/why-depends.cc'),

    join_paths(meson.source_root(), 'src/build-remote/build-remote.cc'),
    join_paths(meson.source_root(), 'src/nix-build/nix-build.cc'),
    join_paths(meson.source_root(), 'src/nix-channel/nix-channel.cc'),
    join_paths(meson.source_root(), 'src/nix-collect-garbage/nix-collect-garbage.cc'),
    join_paths(meson.source_root(), 'src/nix-copy-closure/nix-copy-closure.cc'),
    join_paths(meson.source_root(), 'src/nix-daemon/nix-daemon.cc'),
    join_paths(meson.source_root(), 'src/nix-env/nix-env.cc'),
    join_paths(meson.source_root(), 'src/nix-env/user-env.cc'),
    join_paths(meson.source_root(), 'src/nix-instantiate/nix-instantiate.cc'),
    join_paths(meson.source_root(), 'src/nix-prefetch-url/nix-prefetch-url.cc'),
    join_paths(meson.source_root(), 'src/nix-store/dotgraph.cc'),
    join_paths(meson.source_root(), 'src/nix-store/graphml.cc'),
    join_paths(meson.source_root(), 'src/nix-store/nix-store.cc'))

nix_ln_src = [
    [ bindir, 'nix-build' ],
    [ bindir, 'nix-channel' ],
    [ bindir, 'nix-collect-garbage' ],
    [ bindir, 'nix-copy-closure' ],
    [ bindir, 'nix-daemon' ],
    [ bindir, 'nix-env' ],
    [ bindir, 'nix-hash' ],
    [ bindir, 'nix-instantiate' ],
    [ bindir, 'nix-prefetch-url' ],
    [ bindir, 'nix-shell' ],
    [ bindir, 'nix-store' ],
    [ join_paths(libexecdir, 'nix'), 'build-remote' ]]

nix_headers = files (
    join_paths(meson.source_root(), 'src/nix/command.hh'),
    join_paths(meson.source_root(), 'src/nix/legacy.hh'),
    join_paths(meson.source_root(), 'src/nix/progress-bar.hh'),
    join_paths(meson.source_root(), 'src/nix-env/user-env.hh'),
    join_paths(meson.source_root(), 'src/nix-store/dotgraph.hh'),
    join_paths(meson.source_root(), 'src/nix-store/graphml.hh'))

# dependancies
#============================================================================

nix_dep_list = [
    pthread_dep,
    libdl_dep,
    boost_dep,
    editline_dep,
    libsodium_dep]





# Link args
#============================================================================

nix_link_list = [
    libutil_lib,
    libstore_lib,
    libmain_lib,
    libexpr_lib
]

nix_link_args = []




# compiler args
#============================================================================

nix_cxx_args = []




# targets
#============================================================================




# build
#============================================================================

nix_bin = executable(
    'nix',
    install : true,
    install_mode : 'rwxr-xr-x',
    install_dir : bindir,
    include_directories : src_inc,
    sources : nix_src,
    link_with : nix_link_list,
    dependencies : nix_dep_list)


# meson does not yet support installing symlink files.
# this is a simple workaround
foreach name : nix_ln_src
    meson.add_install_script(
        'ln',
        '-sf',
        join_paths(bindir, 'nix'),
        name[1])
    meson.add_install_script(
        'cp',
        '-r',
        name[1],
        join_paths(name[0], name[1]))   
endforeach

install_headers(
    nix_headers,
    install_dir : join_paths(includedir, 'nix'))