xref: /openbmc/libcper/meson.build (revision a7d2cdddcc94db11e7d684108da8806e4560c124)
1project(
2    'libcper',
3    ['c', 'cpp'],
4    version: '0.1',
5    meson_version: '>=1.1.1',
6    default_options: [
7        'c_std=c18',
8        'cpp_std=c++23',
9        'tests=' + (meson.is_subproject() ? 'disabled' : 'enabled'),
10        'werror=true',
11        'warning_level=2',
12    ],
13)
14
15library_is_share = get_option('default_library') == 'shared'
16
17project_description = 'libcper library'
18
19SectionSources = files(
20    'sections/cper-section-arm.c',
21    'sections/cper-section-ccix-per.c',
22    'sections/cper-section-cxl-component.c',
23    'sections/cper-section-cxl-protocol.c',
24    'sections/cper-section-dmar-generic.c',
25    'sections/cper-section-dmar-iommu.c',
26    'sections/cper-section-dmar-vtd.c',
27    'sections/cper-section-firmware.c',
28    'sections/cper-section-generic.c',
29    'sections/cper-section-ia32x64.c',
30    'sections/cper-section-ipf.c',
31    'sections/cper-section-memory.c',
32    'sections/cper-section-pci-bus.c',
33    'sections/cper-section-pci-dev.c',
34    'sections/cper-section-pcie.c',
35    'sections/cper-section.c',
36)
37
38EDKSources = files('edk/Cper.c')
39
40GeneratorSectionSources = files(
41    'generator/sections/gen-section-arm.c',
42    'generator/sections/gen-section-ccix-per.c',
43    'generator/sections/gen-section-cxl-component.c',
44    'generator/sections/gen-section-cxl-protocol.c',
45    'generator/sections/gen-section-dmar.c',
46    'generator/sections/gen-section-firmware.c',
47    'generator/sections/gen-section-generic.c',
48    'generator/sections/gen-section-ia32x64.c',
49    'generator/sections/gen-section-memory.c',
50    'generator/sections/gen-section-pci-bus.c',
51    'generator/sections/gen-section-pci-dev.c',
52    'generator/sections/gen-section-pcie.c',
53    'generator/sections/gen-section.c',
54)
55
56cmake = import('cmake')
57cc = meson.get_compiler('c')
58
59json_c_dep = dependency('json-c', required: true, fallback: ['json-c', 'json_c_dep'])
60
61libcper_parse_sources = [
62    'base64.c',
63    'cper-parse.c',
64    'ir-parse.c',
65    'cper-utils.c',
66    'common-utils.c',
67    'json-schema.c',
68]
69
70libcper_include = ['.']
71
72libcper_parse = library(
73    'cper-parse',
74    libcper_parse_sources,
75    SectionSources,
76    EDKSources,
77    version: meson.project_version(),
78    include_directories: include_directories(libcper_include),
79    c_args: '-Wno-address-of-packed-member',
80    dependencies: [
81        json_c_dep,
82    ],
83    install: true,
84    install_dir: get_option('libdir'),
85)
86libcper_parse = declare_dependency(
87    include_directories: include_directories(libcper_include),
88    link_with: libcper_parse,
89)
90
91libcper_generate_sources = ['generator/cper-generate.c', 'generator/gen-utils.c', 'common-utils.c']
92
93libcper_generate = library(
94    'cper-generate',
95    libcper_generate_sources,
96    GeneratorSectionSources,
97    version: meson.project_version(),
98    include_directories: include_directories(libcper_include),
99    dependencies: [
100        libcper_parse,
101        json_c_dep,
102    ],
103    install: true,
104    install_dir: get_option('libdir'),
105)
106libcper_generate = declare_dependency(
107    include_directories: include_directories(libcper_include),
108    link_with: libcper_generate,
109)
110
111install_headers('cper-parse.h')
112install_headers('cper-utils.h')
113install_headers('common-utils.h')
114install_headers('generator/cper-generate.h', subdir: 'generator')
115install_headers('edk/Cper.h', subdir: 'edk')
116install_headers('edk/BaseTypes.h', subdir: 'edk')
117
118if get_option('utility').allowed()
119    executable(
120        'cper-convert',
121        'cli-app/cper-convert.c',
122        include_directories: include_directories(libcper_include),
123        dependencies: [
124            libcper_parse,
125            json_c_dep,
126        ],
127        install: true,
128        install_dir: get_option('bindir'),
129    )
130
131    executable(
132        'cper-generate',
133        'generator/cper-generate-cli.c',
134        EDKSources,
135        include_directories: include_directories(libcper_include),
136        dependencies: [
137            libcper_generate,
138        ],
139        install: true,
140        install_dir: get_option('bindir'),
141    )
142endif
143
144run_command('cp', '-r', 'specification/json/', meson.current_build_dir(), check: true)
145run_command(
146    'mv',
147    meson.current_build_dir() / 'json',
148    meson.current_build_dir() / 'specification',
149)
150
151if get_option('tests').allowed()
152    subdir('tests')
153endif
154