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 17fmt_dep = dependency('fmt', required: false) 18if not fmt_dep.found() 19 fmt_proj = import('cmake').subproject( 20 'fmt', 21 cmake_options: [ 22 '-DCMAKE_POSITION_INDEPENDENT_CODE=ON', 23 '-DMASTER_PROJECT=OFF' 24 ], 25 required: false) 26 assert(fmt_proj.found(), 'fmtlib is required') 27 fmt_dep = fmt_proj.dependency('fmt') 28endif 29 30ncsid_deps = [ 31 fmt_dep, 32 dependency('sdbusplus', fallback: ['sdbusplus', 'sdbusplus_dep']), 33 dependency('stdplus', fallback: ['stdplus', 'stdplus_dep']), 34] 35 36ncsid_lib = static_library( 37 'ncsid', 38 [ 39 'net_config.cpp', 40 'net_iface.cpp', 41 'net_sockio.cpp', 42 'ncsi_sockio.cpp', 43 'ncsi_state_machine.cpp', 44 'platforms/nemora/portable/ncsi_fsm.c', 45 'platforms/nemora/portable/ncsi_client.c', 46 'platforms/nemora/portable/ncsi_server.c', 47 ], 48 include_directories: ncsid_headers, 49 implicit_include_directories: false, 50 dependencies: ncsid_deps) 51 52ncsid = declare_dependency( 53 dependencies: ncsid_deps, 54 include_directories: ncsid_headers, 55 link_with: ncsid_lib) 56 57executable( 58 'ncsid', 59 'ncsid.cpp', 60 implicit_include_directories: false, 61 dependencies: ncsid, 62 install: true, 63 install_dir: get_option('libexecdir')) 64 65normalize_ip = executable( 66 'normalize_ip', 67 'normalize_ip.c', 68 implicit_include_directories: false, 69 install: true) 70 71normalize_mac = executable( 72 'normalize_mac', 73 'normalize_mac.c', 74 implicit_include_directories: false, 75 install: true) 76 77install_data( 78 'ncsid_udhcpc4.script', 79 'ncsid_udhcpc6.script', 80 install_mode: 'rwxr-xr-x', 81 install_dir: get_option('libexecdir')) 82 83install_data( 84 'ncsid_lib.sh', 85 install_mode: 'rw-r--r--', 86 install_dir: get_option('libexecdir')) 87 88install_data( 89 'update_static_neighbors.sh', 90 install_mode: 'rwxr-xr-x', 91 install_dir: get_option('libexecdir')) 92 93systemd = dependency('systemd') 94systemunitdir = systemd.get_pkgconfig_variable('systemdsystemunitdir') 95 96libexecdir = get_option('prefix') / get_option('libexecdir') 97 98configure_file( 99 configuration: {'BIN': libexecdir / 'ncsid'}, 100 input: 'ncsid@.service.in', 101 output: 'ncsid@.service', 102 install_mode: 'rw-r--r--', 103 install_dir: systemunitdir) 104 105configure_file( 106 configuration: {'BIN': libexecdir / 'update_static_neighbors.sh'}, 107 input: 'update-static-neighbors@.service.in', 108 output: 'update-static-neighbors@.service', 109 install_mode: 'rw-r--r--', 110 install_dir: systemunitdir) 111 112configure_file( 113 configuration: { 114 'SCRIPT': libexecdir / 'ncsid_udhcpc4.script'}, 115 input: 'dhcp4@.service.in', 116 output: 'dhcp4@.service', 117 install_mode: 'rw-r--r--', 118 install_dir: systemunitdir) 119 120configure_file( 121 configuration: { 122 'SCRIPT': libexecdir / 'ncsid_udhcpc6.script'}, 123 input: 'dhcp6@.service.in', 124 output: 'dhcp6@.service', 125 install_mode: 'rw-r--r--', 126 install_dir: systemunitdir) 127 128install_data( 129 'nic-hostful@.target', 130 'nic-hostless@.target', 131 'update-static-neighbors@.timer', 132 install_mode: 'rw-r--r--', 133 install_dir: systemunitdir) 134