1# Copyright 2021 Google LLC
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15ncsid_headers = include_directories('.')
16
17ncsid_deps = [
18  dependency('sdbusplus', fallback: ['sdbusplus', 'sdbusplus_dep']),
19  dependency('stdplus', fallback: ['stdplus', 'stdplus_dep']),
20]
21
22ncsid_lib = static_library(
23  'ncsid',
24  [
25    'net_config.cpp',
26    'net_iface.cpp',
27    'net_sockio.cpp',
28    'ncsi_sockio.cpp',
29    'ncsi_state_machine.cpp',
30    'platforms/nemora/portable/ncsi_fsm.c',
31    'platforms/nemora/portable/ncsi_client.c',
32    'platforms/nemora/portable/ncsi_server.c',
33  ],
34  include_directories: ncsid_headers,
35  implicit_include_directories: false,
36  dependencies: ncsid_deps)
37
38ncsid = declare_dependency(
39  dependencies: ncsid_deps,
40  include_directories: ncsid_headers,
41  link_with: ncsid_lib)
42
43executable(
44  'ncsid',
45  'ncsid.cpp',
46  implicit_include_directories: false,
47  dependencies: ncsid,
48  install: true,
49  install_dir: get_option('libexecdir'))
50
51normalize_ip = executable(
52  'normalize_ip',
53  'normalize_ip.c',
54  implicit_include_directories: false,
55  install: true)
56
57normalize_mac = executable(
58  'normalize_mac',
59  'normalize_mac.c',
60  implicit_include_directories: false,
61  install: true)
62
63install_data(
64  'ncsid_udhcpc4.script',
65  'ncsid_udhcpc6.script',
66  'update_ra_gw.sh',
67  'update_ra_neighbor.sh',
68  'update_static_neighbors.sh',
69  install_mode: 'rwxr-xr-x',
70  install_dir: get_option('libexecdir'))
71
72install_data(
73  'ncsid_lib.sh',
74  install_mode: 'rw-r--r--',
75  install_dir: get_option('libexecdir'))
76
77systemd = dependency('systemd')
78systemunitdir = systemd.get_variable('systemdsystemunitdir')
79
80libexecdir = get_option('prefix') / get_option('libexecdir')
81
82configure_file(
83  configuration: {'BIN': libexecdir / 'ncsid'},
84  input: 'ncsid@.service.in',
85  output: 'ncsid@.service',
86  install_mode: 'rw-r--r--',
87  install_dir: systemunitdir)
88
89configure_file(
90  configuration: {'BIN': libexecdir / 'update_ra_gw.sh'},
91  input: 'update-ra-gw@.service.in',
92  output: 'update-ra-gw@.service',
93  install_mode: 'rw-r--r--',
94  install_dir: systemunitdir)
95
96configure_file(
97  configuration: {'BIN': libexecdir / 'update_ra_neighbor.sh'},
98  input: 'update-ra-neighbor@.service.in',
99  output: 'update-ra-neighbor@.service',
100  install_mode: 'rw-r--r--',
101  install_dir: systemunitdir)
102
103configure_file(
104  configuration: {'BIN': libexecdir / 'update_static_neighbors.sh'},
105  input: 'update-static-neighbors@.service.in',
106  output: 'update-static-neighbors@.service',
107  install_mode: 'rw-r--r--',
108  install_dir: systemunitdir)
109
110configure_file(
111  configuration: {
112    'SCRIPT': libexecdir / 'ncsid_udhcpc4.script'},
113  input: 'dhcp4@.service.in',
114  output: 'dhcp4@.service',
115  install_mode: 'rw-r--r--',
116  install_dir: systemunitdir)
117
118configure_file(
119  configuration: {
120    'SCRIPT': libexecdir / 'ncsid_udhcpc6.script'},
121  input: 'dhcp6@.service.in',
122  output: 'dhcp6@.service',
123  install_mode: 'rw-r--r--',
124  install_dir: systemunitdir)
125
126install_data(
127  'nic-hostful@.target',
128  'nic-hostless@.target',
129  'update-ra-neighbor@.timer',
130  'update-static-neighbors@.timer',
131  install_mode: 'rw-r--r--',
132  install_dir: systemunitdir)
133