1 # SPDX-License-Identifier: LGPL-2.1+
3 # Copyright © 2017 Zbigniew Jędrzejewski-Szmek
5 basic_sources = files('''
178 socket-protocol-list.c
179 socket-protocol-list.h
227 missing_h = files('missing.h')
229 generate_gperfs = find_program('generate-gperfs.py')
231 generate_af_list = find_program('generate-af-list.sh')
232 af_list_txt = custom_target(
234 output : 'af-list.txt',
235 command : [generate_af_list, cpp],
238 generate_arphrd_list = find_program('generate-arphrd-list.sh')
239 arphrd_list_txt = custom_target(
241 output : 'arphrd-list.txt',
242 command : [generate_arphrd_list, cpp],
245 generate_cap_list = find_program('generate-cap-list.sh')
246 cap_list_txt = custom_target(
248 output : 'cap-list.txt',
249 command : [generate_cap_list, cpp, config_h, missing_h],
252 generate_errno_list = find_program('generate-errno-list.sh')
253 errno_list_txt = custom_target(
255 output : 'errno-list.txt',
256 command : [generate_errno_list, cpp],
259 generate_socket_protocol_list = find_program('generate-socket-protocol-list.sh')
260 socket_protocol_list_txt = custom_target(
261 'socket-protocol-list.txt',
262 output : 'socket-protocol-list.txt',
263 command : [generate_socket_protocol_list, cpp],
266 generated_gperf_headers = []
267 foreach item : [['af', af_list_txt, 'af', ''],
268 ['arphrd', arphrd_list_txt, 'arphrd', 'ARPHRD_'],
269 ['cap', cap_list_txt, 'capability', ''],
270 ['errno', errno_list_txt, 'errno', ''],
271 ['socket-protocol', socket_protocol_list_txt, 'socket_protocol', 'IPPROTO_']]
273 fname = '@0@-from-name.gperf'.format(item[0])
274 gperf_file = custom_target(
278 command : [generate_gperfs, item[2], item[3], '@INPUT@'],
281 fname = '@0@-from-name.h'.format(item[0])
282 target1 = custom_target(
287 '-L', 'ANSI-C', '-t', '--ignore-case',
288 '-N', 'lookup_@0@'.format(item[2]),
289 '-H', 'hash_@0@_name'.format(item[2]),
294 fname = '@0@-to-name.h'.format(item[0])
295 awkscript = '@0@-to-name.awk'.format(item[0])
296 target2 = custom_target(
298 input : [awkscript, item[1]],
300 command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
303 generated_gperf_headers += [target1, target2]
306 basic_sources += [missing_h] + generated_gperf_headers
307 basic_gcrypt_sources = files(
311 libbasic = static_library(
314 include_directories : includes,
315 dependencies : [threads,
320 c_args : ['-fvisibility=default'],
323 # A convenience library that is separate from libbasic to avoid
324 # unnecessary linking to libgcrypt.
325 libbasic_gcrypt = static_library(
327 basic_gcrypt_sources,
328 include_directories : includes,
329 dependencies : [libgcrypt],
330 c_args : ['-fvisibility=default'])