blob: 624d85b9ce3bbddb745d9ce1ddfe19b2a831402a [file] [log] [blame]
John Chung197ea122024-05-03 19:57:55 +08001project(
Ed Tanousa5b3d492024-06-18 13:24:05 -07002 '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)
John Chung197ea122024-05-03 19:57:55 +080014
Ed Tanous358c7e12024-07-15 13:54:57 -070015add_global_arguments(
16 '-DLIBCPER_JSON_SPEC="'
17 + meson.current_source_dir()
18 + '/specification/json/cper-json.json"',
19 language: ['c', 'cpp'],
20)
21
Andrew Adriance1a908982024-07-02 14:26:10 -070022library_is_share = get_option('default_library') == 'shared'
Andrew Adriance4482c482024-07-02 14:55:11 -070023add_global_arguments('-D_POSIX_C_SOURCE=200809L', language : 'c')
Andrew Adriance1a908982024-07-02 14:26:10 -070024
John Chung197ea122024-05-03 19:57:55 +080025project_description = 'libcper library'
26
Ed Tanousa84fc932024-07-15 13:48:35 -070027section_sources = files(
Ed Tanousa5b3d492024-06-18 13:24:05 -070028 'sections/cper-section-arm.c',
29 'sections/cper-section-ccix-per.c',
30 'sections/cper-section-cxl-component.c',
31 'sections/cper-section-cxl-protocol.c',
32 'sections/cper-section-dmar-generic.c',
33 'sections/cper-section-dmar-iommu.c',
34 'sections/cper-section-dmar-vtd.c',
35 'sections/cper-section-firmware.c',
36 'sections/cper-section-generic.c',
37 'sections/cper-section-ia32x64.c',
38 'sections/cper-section-ipf.c',
39 'sections/cper-section-memory.c',
40 'sections/cper-section-pci-bus.c',
41 'sections/cper-section-pci-dev.c',
42 'sections/cper-section-pcie.c',
43 'sections/cper-section.c',
John Chung197ea122024-05-03 19:57:55 +080044)
45
Ed Tanousa84fc932024-07-15 13:48:35 -070046edk_sources = files('edk/Cper.c')
John Chung197ea122024-05-03 19:57:55 +080047
Ed Tanousa84fc932024-07-15 13:48:35 -070048generator_section_sources = files(
Ed Tanousa5b3d492024-06-18 13:24:05 -070049 'generator/sections/gen-section-arm.c',
50 'generator/sections/gen-section-ccix-per.c',
51 'generator/sections/gen-section-cxl-component.c',
52 'generator/sections/gen-section-cxl-protocol.c',
53 'generator/sections/gen-section-dmar.c',
54 'generator/sections/gen-section-firmware.c',
55 'generator/sections/gen-section-generic.c',
56 'generator/sections/gen-section-ia32x64.c',
57 'generator/sections/gen-section-memory.c',
58 'generator/sections/gen-section-pci-bus.c',
59 'generator/sections/gen-section-pci-dev.c',
60 'generator/sections/gen-section-pcie.c',
61 'generator/sections/gen-section.c',
John Chung197ea122024-05-03 19:57:55 +080062)
63
John Chungabc62b82024-05-22 22:45:36 +080064cc = meson.get_compiler('c')
John Chung197ea122024-05-03 19:57:55 +080065
Ed Tanousa5b3d492024-06-18 13:24:05 -070066json_c_dep = dependency('json-c', required: true, fallback: ['json-c', 'json_c_dep'])
John Chung197ea122024-05-03 19:57:55 +080067
John Chung197ea122024-05-03 19:57:55 +080068libcper_parse_sources = [
Ed Tanousa7d2cdd2024-07-15 11:07:27 -070069 'base64.c',
Ed Tanousa5b3d492024-06-18 13:24:05 -070070 'cper-parse.c',
71 'ir-parse.c',
72 'cper-utils.c',
73 'common-utils.c',
74 'json-schema.c',
John Chung197ea122024-05-03 19:57:55 +080075]
76
77libcper_include = ['.']
78
79libcper_parse = library(
Ed Tanousa5b3d492024-06-18 13:24:05 -070080 'cper-parse',
81 libcper_parse_sources,
Ed Tanousa84fc932024-07-15 13:48:35 -070082 section_sources,
83 edk_sources,
Ed Tanousa5b3d492024-06-18 13:24:05 -070084 version: meson.project_version(),
85 include_directories: include_directories(libcper_include),
86 c_args: '-Wno-address-of-packed-member',
87 dependencies: [
88 json_c_dep,
Ed Tanousa5b3d492024-06-18 13:24:05 -070089 ],
90 install: true,
91 install_dir: get_option('libdir'),
John Chung197ea122024-05-03 19:57:55 +080092)
93libcper_parse = declare_dependency(
Ed Tanousa5b3d492024-06-18 13:24:05 -070094 include_directories: include_directories(libcper_include),
95 link_with: libcper_parse,
John Chung197ea122024-05-03 19:57:55 +080096)
97
Ed Tanousa5b3d492024-06-18 13:24:05 -070098libcper_generate_sources = ['generator/cper-generate.c', 'generator/gen-utils.c', 'common-utils.c']
John Chung197ea122024-05-03 19:57:55 +080099
100libcper_generate = library(
Ed Tanousa5b3d492024-06-18 13:24:05 -0700101 'cper-generate',
102 libcper_generate_sources,
Ed Tanousa84fc932024-07-15 13:48:35 -0700103 generator_section_sources,
Ed Tanousa5b3d492024-06-18 13:24:05 -0700104 version: meson.project_version(),
105 include_directories: include_directories(libcper_include),
106 dependencies: [
107 libcper_parse,
108 json_c_dep,
Ed Tanousa5b3d492024-06-18 13:24:05 -0700109 ],
110 install: true,
111 install_dir: get_option('libdir'),
John Chung197ea122024-05-03 19:57:55 +0800112)
113libcper_generate = declare_dependency(
Ed Tanousa5b3d492024-06-18 13:24:05 -0700114 include_directories: include_directories(libcper_include),
115 link_with: libcper_generate,
John Chung197ea122024-05-03 19:57:55 +0800116)
117
John Chungabc62b82024-05-22 22:45:36 +0800118install_headers('cper-parse.h')
119install_headers('cper-utils.h')
120install_headers('common-utils.h')
121install_headers('generator/cper-generate.h', subdir: 'generator')
122install_headers('edk/Cper.h', subdir: 'edk')
123install_headers('edk/BaseTypes.h', subdir: 'edk')
John Chung197ea122024-05-03 19:57:55 +0800124
John Chungabc62b82024-05-22 22:45:36 +0800125if get_option('utility').allowed()
Ed Tanousa5b3d492024-06-18 13:24:05 -0700126 executable(
127 'cper-convert',
128 'cli-app/cper-convert.c',
129 include_directories: include_directories(libcper_include),
130 dependencies: [
131 libcper_parse,
132 json_c_dep,
133 ],
134 install: true,
135 install_dir: get_option('bindir'),
136 )
John Chungabc62b82024-05-22 22:45:36 +0800137
Ed Tanousa5b3d492024-06-18 13:24:05 -0700138 executable(
139 'cper-generate',
140 'generator/cper-generate-cli.c',
Ed Tanousa84fc932024-07-15 13:48:35 -0700141 edk_sources,
Ed Tanousa5b3d492024-06-18 13:24:05 -0700142 include_directories: include_directories(libcper_include),
143 dependencies: [
144 libcper_generate,
145 ],
146 install: true,
147 install_dir: get_option('bindir'),
148 )
John Chungabc62b82024-05-22 22:45:36 +0800149endif
John Chung197ea122024-05-03 19:57:55 +0800150
John Chung197ea122024-05-03 19:57:55 +0800151if get_option('tests').allowed()
Ed Tanousa5b3d492024-06-18 13:24:05 -0700152 subdir('tests')
Ed Tanous358c7e12024-07-15 13:54:57 -0700153endif