1 # SPDX-License-Identifier: LGPL-2.1+
3 # Copyright 2017 Zbigniew Jędrzejewski-Szmek
5 basic_sources = files('''
176 socket-protocol-list.c
177 socket-protocol-list.h
225 missing_h = files('missing.h')
227 generate_gperfs = find_program('generate-gperfs.py')
229 generate_af_list = find_program('generate-af-list.sh')
230 af_list_txt = custom_target(
232 output : 'af-list.txt',
233 command : [generate_af_list, cpp],
236 generate_arphrd_list = find_program('generate-arphrd-list.sh')
237 arphrd_list_txt = custom_target(
239 output : 'arphrd-list.txt',
240 command : [generate_arphrd_list, cpp],
243 generate_cap_list = find_program('generate-cap-list.sh')
244 cap_list_txt = custom_target(
246 output : 'cap-list.txt',
247 command : [generate_cap_list, cpp, config_h, missing_h],
250 generate_errno_list = find_program('generate-errno-list.sh')
251 errno_list_txt = custom_target(
253 output : 'errno-list.txt',
254 command : [generate_errno_list, cpp],
257 generate_socket_protocol_list = find_program('generate-socket-protocol-list.sh')
258 socket_protocol_list_txt = custom_target(
259 'socket-protocol-list.txt',
260 output : 'socket-protocol-list.txt',
261 command : [generate_socket_protocol_list, cpp],
264 generated_gperf_headers = []
265 foreach item : [['af', af_list_txt, 'af', ''],
266 ['arphrd', arphrd_list_txt, 'arphrd', 'ARPHRD_'],
267 ['cap', cap_list_txt, 'capability', ''],
268 ['errno', errno_list_txt, 'errno', ''],
269 ['socket-protocol', socket_protocol_list_txt, 'socket_protocol', 'IPPROTO_']]
271 fname = '@0@-from-name.gperf'.format(item[0])
272 gperf_file = custom_target(
276 command : [generate_gperfs, item[2], item[3], '@INPUT@'],
279 fname = '@0@-from-name.h'.format(item[0])
280 target1 = custom_target(
285 '-L', 'ANSI-C', '-t', '--ignore-case',
286 '-N', 'lookup_@0@'.format(item[2]),
287 '-H', 'hash_@0@_name'.format(item[2]),
292 fname = '@0@-to-name.h'.format(item[0])
293 awkscript = '@0@-to-name.awk'.format(item[0])
294 target2 = custom_target(
296 input : [awkscript, item[1]],
298 command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
301 generated_gperf_headers += [target1, target2]
304 basic_sources += [missing_h] + generated_gperf_headers
306 libbasic = static_library(
309 include_directories : includes,
310 dependencies : [threads,
315 c_args : ['-fvisibility=default'],
318 # A convenience library that is separate from libbasic to avoid
319 # unnecessary linking to libgcrypt.
320 libbasic_gcrypt = static_library(
324 include_directories : includes,
325 dependencies : [libgcrypt],
326 c_args : ['-fvisibility=default'])