diff --git a/subprojects/kafel.wrap b/subprojects/kafel.wrap new file mode 100644 index 000000000..52ee3b9c9 --- /dev/null +++ b/subprojects/kafel.wrap @@ -0,0 +1,9 @@ +[wrap-file] +directory = kafel-20231004 +source_url = https://github.com/google/kafel/archive/20231004.tar.gz +source_filename = 231004.tar.gz +source_hash = b5fe85ad72070844dc24474a036f3b909c3f604b69c616d124793c37df7a9d7f + +[provide] +dependency_names = kafel +program_names = dump_policy_bpf diff --git a/subprojects/packagefiles/kafel/meson.build b/subprojects/packagefiles/kafel/meson.build new file mode 100644 index 000000000..a1797ea20 --- /dev/null +++ b/subprojects/packagefiles/kafel/meson.build @@ -0,0 +1,73 @@ +project('kafel', 'c', + version: '2023.10.10', + default_options: [ + 'c_std=gnu11', + ]) + +flex = find_program('flex') +bison = find_program('bison') + +lexer_gen = custom_target( + 'lexer', + input: 'src/lexer.l', + output: ['lexer.c', 'lexer.h'], + command: [flex, '@INPUT@'], +) + +parser_gen = custom_target( + 'parser', + input: 'src/parser.y', + output: ['parser.c', 'parser.h'], + command: [bison, '-o', 'parser.c', '@INPUT@'], +) + +generated_sources = [lexer_gen, parser_gen] + +kafel_inc = include_directories('include', 'src') + +kafel_sources = files( + 'src/kafel.c', + 'src/context.c', + 'src/codegen.c', + 'src/expression.c', + 'src/includes.c', + 'src/parser_types.c', + 'src/policy.c', + 'src/range_rules.c', + 'src/syscall.c', + 'src/syscalls/amd64_syscalls.c', + 'src/syscalls/i386_syscalls.c', + 'src/syscalls/aarch64_syscalls.c', + 'src/syscalls/mipso32_syscalls.c', + 'src/syscalls/mips64_syscalls.c', + 'src/syscalls/riscv64_syscalls.c', + 'src/syscalls/arm_syscalls.c', +) + generated_sources + +kafel_lib = library('kafel', + sources: kafel_sources, + include_directories: kafel_inc, + install: true +) + +kafel_dep = declare_dependency( + include_directories: kafel_inc, + link_with: kafel_lib +) + +dump_policy_bpf_sources = files( + 'tools/dump_policy_bpf/disasm.c', + 'tools/dump_policy_bpf/main.c', + 'tools/dump_policy_bpf/print.c', +) + +dump_policy_bpf_exe = executable('dump_policy_bpf', + sources: dump_policy_bpf_sources, + dependencies: [kafel_dep], + install: true +) + +install_headers('include/kafel.h', subdir: 'kafel') + +meson.override_find_program('dump_policy_bpf', dump_policy_bpf_exe) +meson.override_dependency('kafel', kafel_dep)