Skip to content

Commit 01acde0

Browse files
committed
Add meson build system
[mesonbuild] is a new (not so new already) build system that is extensively used on the linux desktop. It would be fantastic to have support for building fdkaac with Meson in upstream fdkaac, as it would facilitate builds of GStreamer via Meson's subproject support. Cross-compilation is of course also supported, but I have not tested that yet. Meson provides out-of-the-box support for building native binaries and cross binaries in the same build, which seems like something that could be useful for fdkaac. This should be on par with the CMake build definition [mesonbuild]:https://mesonbuild.com/
1 parent 573e93e commit 01acde0

File tree

2 files changed

+383
-0
lines changed

2 files changed

+383
-0
lines changed

meson.build

Lines changed: 382 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,382 @@
1+
project('fdk-aac', 'cpp', 'c', version: '2.0.2')
2+
3+
fdk_aac_inc = include_directories(
4+
'libAACdec/include',
5+
'libAACenc/include',
6+
'libSYS/include',
7+
'libArithCoding/include',
8+
'libDRCdec/include',
9+
'libSACdec/include',
10+
'libSACenc/include',
11+
'libSBRdec/include',
12+
'libSBRenc/include',
13+
'libMpegTPDec/include',
14+
'libMpegTPEnc/include',
15+
'libFDK/include',
16+
'libPCMutils/include',
17+
)
18+
19+
fdk_aac_src = files(
20+
'libAACdec/src/FDK_delay.cpp',
21+
'libAACdec/src/aac_ram.cpp',
22+
'libAACdec/src/aac_rom.cpp',
23+
'libAACdec/src/aacdec_drc.cpp',
24+
'libAACdec/src/aacdec_hcr.cpp',
25+
'libAACdec/src/aacdec_hcr_bit.cpp',
26+
'libAACdec/src/aacdec_hcrs.cpp',
27+
'libAACdec/src/aacdec_pns.cpp',
28+
'libAACdec/src/aacdec_tns.cpp',
29+
'libAACdec/src/aacdecoder.cpp',
30+
'libAACdec/src/aacdecoder_lib.cpp',
31+
'libAACdec/src/block.cpp',
32+
'libAACdec/src/channel.cpp',
33+
'libAACdec/src/channelinfo.cpp',
34+
'libAACdec/src/conceal.cpp',
35+
'libAACdec/src/ldfiltbank.cpp',
36+
'libAACdec/src/pulsedata.cpp',
37+
'libAACdec/src/rvlc.cpp',
38+
'libAACdec/src/rvlcbit.cpp',
39+
'libAACdec/src/rvlcconceal.cpp',
40+
'libAACdec/src/stereo.cpp',
41+
'libAACdec/src/usacdec_ace_d4t64.cpp',
42+
'libAACdec/src/usacdec_ace_ltp.cpp',
43+
'libAACdec/src/usacdec_acelp.cpp',
44+
'libAACdec/src/usacdec_fac.cpp',
45+
'libAACdec/src/usacdec_lpc.cpp',
46+
'libAACdec/src/usacdec_lpd.cpp',
47+
'libAACdec/src/usacdec_rom.cpp',
48+
'libAACenc/src/aacEnc_ram.cpp',
49+
'libAACenc/src/aacEnc_rom.cpp',
50+
'libAACenc/src/aacenc.cpp',
51+
'libAACenc/src/aacenc_lib.cpp',
52+
'libAACenc/src/aacenc_pns.cpp',
53+
'libAACenc/src/aacenc_tns.cpp',
54+
'libAACenc/src/adj_thr.cpp',
55+
'libAACenc/src/band_nrg.cpp',
56+
'libAACenc/src/bandwidth.cpp',
57+
'libAACenc/src/bit_cnt.cpp',
58+
'libAACenc/src/bitenc.cpp',
59+
'libAACenc/src/block_switch.cpp',
60+
'libAACenc/src/channel_map.cpp',
61+
'libAACenc/src/chaosmeasure.cpp',
62+
'libAACenc/src/dyn_bits.cpp',
63+
'libAACenc/src/grp_data.cpp',
64+
'libAACenc/src/intensity.cpp',
65+
'libAACenc/src/line_pe.cpp',
66+
'libAACenc/src/metadata_compressor.cpp',
67+
'libAACenc/src/metadata_main.cpp',
68+
'libAACenc/src/mps_main.cpp',
69+
'libAACenc/src/ms_stereo.cpp',
70+
'libAACenc/src/noisedet.cpp',
71+
'libAACenc/src/pnsparam.cpp',
72+
'libAACenc/src/pre_echo_control.cpp',
73+
'libAACenc/src/psy_configuration.cpp',
74+
'libAACenc/src/psy_main.cpp',
75+
'libAACenc/src/qc_main.cpp',
76+
'libAACenc/src/quantize.cpp',
77+
'libAACenc/src/sf_estim.cpp',
78+
'libAACenc/src/spreading.cpp',
79+
'libAACenc/src/tonality.cpp',
80+
'libAACenc/src/transform.cpp',
81+
'libArithCoding/src/ac_arith_coder.cpp',
82+
'libDRCdec/src/FDK_drcDecLib.cpp',
83+
'libDRCdec/src/drcDec_gainDecoder.cpp',
84+
'libDRCdec/src/drcDec_reader.cpp',
85+
'libDRCdec/src/drcDec_rom.cpp',
86+
'libDRCdec/src/drcDec_selectionProcess.cpp',
87+
'libDRCdec/src/drcDec_tools.cpp',
88+
'libDRCdec/src/drcGainDec_init.cpp',
89+
'libDRCdec/src/drcGainDec_preprocess.cpp',
90+
'libDRCdec/src/drcGainDec_process.cpp',
91+
'libMpegTPDec/src/tpdec_adif.cpp',
92+
'libMpegTPDec/src/tpdec_adts.cpp',
93+
'libMpegTPDec/src/tpdec_asc.cpp',
94+
'libMpegTPDec/src/tpdec_drm.cpp',
95+
'libMpegTPDec/src/tpdec_latm.cpp',
96+
'libMpegTPDec/src/tpdec_lib.cpp',
97+
'libMpegTPEnc/src/tpenc_adif.cpp',
98+
'libMpegTPEnc/src/tpenc_adts.cpp',
99+
'libMpegTPEnc/src/tpenc_asc.cpp',
100+
'libMpegTPEnc/src/tpenc_latm.cpp',
101+
'libMpegTPEnc/src/tpenc_lib.cpp',
102+
'libSACdec/src/sac_bitdec.cpp',
103+
'libSACdec/src/sac_calcM1andM2.cpp',
104+
'libSACdec/src/sac_dec.cpp',
105+
'libSACdec/src/sac_dec_conceal.cpp',
106+
'libSACdec/src/sac_dec_lib.cpp',
107+
'libSACdec/src/sac_process.cpp',
108+
'libSACdec/src/sac_qmf.cpp',
109+
'libSACdec/src/sac_reshapeBBEnv.cpp',
110+
'libSACdec/src/sac_rom.cpp',
111+
'libSACdec/src/sac_smoothing.cpp',
112+
'libSACdec/src/sac_stp.cpp',
113+
'libSACdec/src/sac_tsd.cpp',
114+
'libSACenc/src/sacenc_bitstream.cpp',
115+
'libSACenc/src/sacenc_delay.cpp',
116+
'libSACenc/src/sacenc_dmx_tdom_enh.cpp',
117+
'libSACenc/src/sacenc_filter.cpp',
118+
'libSACenc/src/sacenc_framewindowing.cpp',
119+
'libSACenc/src/sacenc_huff_tab.cpp',
120+
'libSACenc/src/sacenc_lib.cpp',
121+
'libSACenc/src/sacenc_nlc_enc.cpp',
122+
'libSACenc/src/sacenc_onsetdetect.cpp',
123+
'libSACenc/src/sacenc_paramextract.cpp',
124+
'libSACenc/src/sacenc_staticgain.cpp',
125+
'libSACenc/src/sacenc_tree.cpp',
126+
'libSACenc/src/sacenc_vectorfunctions.cpp',
127+
'libSBRdec/src/HFgen_preFlat.cpp',
128+
'libSBRdec/src/env_calc.cpp',
129+
'libSBRdec/src/env_dec.cpp',
130+
'libSBRdec/src/env_extr.cpp',
131+
'libSBRdec/src/hbe.cpp',
132+
'libSBRdec/src/huff_dec.cpp',
133+
'libSBRdec/src/lpp_tran.cpp',
134+
'libSBRdec/src/psbitdec.cpp',
135+
'libSBRdec/src/psdec.cpp',
136+
'libSBRdec/src/psdec_drm.cpp',
137+
'libSBRdec/src/psdecrom_drm.cpp',
138+
'libSBRdec/src/pvc_dec.cpp',
139+
'libSBRdec/src/sbr_deb.cpp',
140+
'libSBRdec/src/sbr_dec.cpp',
141+
'libSBRdec/src/sbr_ram.cpp',
142+
'libSBRdec/src/sbr_rom.cpp',
143+
'libSBRdec/src/sbrdec_drc.cpp',
144+
'libSBRdec/src/sbrdec_freq_sca.cpp',
145+
'libSBRdec/src/sbrdecoder.cpp',
146+
'libSBRenc/src/bit_sbr.cpp',
147+
'libSBRenc/src/code_env.cpp',
148+
'libSBRenc/src/env_bit.cpp',
149+
'libSBRenc/src/env_est.cpp',
150+
'libSBRenc/src/fram_gen.cpp',
151+
'libSBRenc/src/invf_est.cpp',
152+
'libSBRenc/src/mh_det.cpp',
153+
'libSBRenc/src/nf_est.cpp',
154+
'libSBRenc/src/ps_bitenc.cpp',
155+
'libSBRenc/src/ps_encode.cpp',
156+
'libSBRenc/src/ps_main.cpp',
157+
'libSBRenc/src/resampler.cpp',
158+
'libSBRenc/src/sbr_encoder.cpp',
159+
'libSBRenc/src/sbr_misc.cpp',
160+
'libSBRenc/src/sbrenc_freq_sca.cpp',
161+
'libSBRenc/src/sbrenc_ram.cpp',
162+
'libSBRenc/src/sbrenc_rom.cpp',
163+
'libSBRenc/src/ton_corr.cpp',
164+
'libSBRenc/src/tran_det.cpp',
165+
'libPCMutils/src/limiter.cpp',
166+
'libPCMutils/src/pcm_utils.cpp',
167+
'libPCMutils/src/pcmdmx_lib.cpp',
168+
'libFDK/src/FDK_bitbuffer.cpp',
169+
'libFDK/src/FDK_core.cpp',
170+
'libFDK/src/FDK_crc.cpp',
171+
'libFDK/src/FDK_decorrelate.cpp',
172+
'libFDK/src/FDK_hybrid.cpp',
173+
'libFDK/src/FDK_lpc.cpp',
174+
'libFDK/src/FDK_matrixCalloc.cpp',
175+
'libFDK/src/FDK_qmf_domain.cpp',
176+
'libFDK/src/FDK_tools_rom.cpp',
177+
'libFDK/src/FDK_trigFcts.cpp',
178+
'libFDK/src/autocorr2nd.cpp',
179+
'libFDK/src/dct.cpp',
180+
'libFDK/src/fft.cpp',
181+
'libFDK/src/fft_rad2.cpp',
182+
'libFDK/src/fixpoint_math.cpp',
183+
'libFDK/src/huff_nodes.cpp',
184+
'libFDK/src/mdct.cpp',
185+
'libFDK/src/nlc_dec.cpp',
186+
'libFDK/src/qmf.cpp',
187+
'libFDK/src/scale.cpp',
188+
'libSYS/src/genericStds.cpp',
189+
'libSYS/src/syslib_channelMapDescr.cpp',
190+
'libAACdec/src/aac_ram.h',
191+
'libAACdec/src/aac_rom.h',
192+
'libAACdec/src/aacdec_drc.h',
193+
'libAACdec/src/aacdec_drc_types.h',
194+
'libAACdec/src/aacdec_hcr.h',
195+
'libAACdec/src/aacdec_hcr_bit.h',
196+
'libAACdec/src/aacdec_hcr_types.h',
197+
'libAACdec/src/aacdec_hcrs.h',
198+
'libAACdec/src/aacdec_pns.h',
199+
'libAACdec/src/aacdec_tns.h',
200+
'libAACdec/src/aacdecoder.h',
201+
'libAACdec/src/block.h',
202+
'libAACdec/src/channel.h',
203+
'libAACdec/src/channelinfo.h',
204+
'libAACdec/src/conceal.h',
205+
'libAACdec/src/conceal_types.h',
206+
'libAACdec/src/FDK_delay.h',
207+
'libAACdec/src/ldfiltbank.h',
208+
'libAACdec/src/overlapadd.h',
209+
'libAACdec/src/pulsedata.h',
210+
'libAACdec/src/rvlc.h',
211+
'libAACdec/src/rvlc_info.h',
212+
'libAACdec/src/rvlcbit.h',
213+
'libAACdec/src/rvlcconceal.h',
214+
'libAACdec/src/stereo.h',
215+
'libAACdec/src/usacdec_ace_d4t64.h',
216+
'libAACdec/src/usacdec_ace_ltp.h',
217+
'libAACdec/src/usacdec_acelp.h',
218+
'libAACdec/src/usacdec_const.h',
219+
'libAACdec/src/usacdec_fac.h',
220+
'libAACdec/src/usacdec_lpc.h',
221+
'libAACdec/src/usacdec_lpd.h',
222+
'libAACdec/src/usacdec_rom.h',
223+
'libAACenc/src/aacenc.h',
224+
'libAACenc/src/aacenc_pns.h',
225+
'libAACenc/src/aacEnc_ram.h',
226+
'libAACenc/src/aacEnc_rom.h',
227+
'libAACenc/src/aacenc_tns.h',
228+
'libAACenc/src/adj_thr.h',
229+
'libAACenc/src/adj_thr_data.h',
230+
'libAACenc/src/band_nrg.h',
231+
'libAACenc/src/bandwidth.h',
232+
'libAACenc/src/bit_cnt.h',
233+
'libAACenc/src/bitenc.h',
234+
'libAACenc/src/block_switch.h',
235+
'libAACenc/src/channel_map.h',
236+
'libAACenc/src/chaosmeasure.h',
237+
'libAACenc/src/dyn_bits.h',
238+
'libAACenc/src/grp_data.h',
239+
'libAACenc/src/intensity.h',
240+
'libAACenc/src/interface.h',
241+
'libAACenc/src/line_pe.h',
242+
'libAACenc/src/metadata_compressor.h',
243+
'libAACenc/src/metadata_main.h',
244+
'libAACenc/src/mps_main.h',
245+
'libAACenc/src/ms_stereo.h',
246+
'libAACenc/src/noisedet.h',
247+
'libAACenc/src/pns_func.h',
248+
'libAACenc/src/pnsparam.h',
249+
'libAACenc/src/pre_echo_control.h',
250+
'libAACenc/src/psy_configuration.h',
251+
'libAACenc/src/psy_const.h',
252+
'libAACenc/src/psy_data.h',
253+
'libAACenc/src/psy_main.h',
254+
'libAACenc/src/qc_data.h',
255+
'libAACenc/src/qc_main.h',
256+
'libAACenc/src/quantize.h',
257+
'libAACenc/src/sf_estim.h',
258+
'libAACenc/src/spreading.h',
259+
'libAACenc/src/tns_func.h',
260+
'libAACenc/src/tonality.h',
261+
'libAACenc/src/transform.h',
262+
'libDRCdec/src/drcDec_gainDecoder.h',
263+
'libDRCdec/src/drcDec_reader.h',
264+
'libDRCdec/src/drcDec_rom.h',
265+
'libDRCdec/src/drcDec_selectionProcess.h',
266+
'libDRCdec/src/drcDec_tools.h',
267+
'libDRCdec/src/drcDec_types.h',
268+
'libDRCdec/src/drcDecoder.h',
269+
'libDRCdec/src/drcGainDec_init.h',
270+
'libDRCdec/src/drcGainDec_preprocess.h',
271+
'libDRCdec/src/drcGainDec_process.h',
272+
'libMpegTPDec/src/tp_version.h',
273+
'libMpegTPDec/src/tpdec_adif.h',
274+
'libMpegTPDec/src/tpdec_adts.h',
275+
'libMpegTPDec/src/tpdec_drm.h',
276+
'libMpegTPDec/src/tpdec_latm.h',
277+
'libMpegTPEnc/src/tp_version.h',
278+
'libMpegTPEnc/src/tpenc_adif.h',
279+
'libMpegTPEnc/src/tpenc_adts.h',
280+
'libMpegTPEnc/src/tpenc_asc.h',
281+
'libMpegTPEnc/src/tpenc_latm.h',
282+
'libSACdec/src/sac_bitdec.h',
283+
'libSACdec/src/sac_calcM1andM2.h',
284+
'libSACdec/src/sac_dec.h',
285+
'libSACdec/src/sac_dec_conceal.h',
286+
'libSACdec/src/sac_dec_interface.h',
287+
'libSACdec/src/sac_dec_ssc_struct.h',
288+
'libSACdec/src/sac_process.h',
289+
'libSACdec/src/sac_qmf.h',
290+
'libSACdec/src/sac_reshapeBBEnv.h',
291+
'libSACdec/src/sac_rom.h',
292+
'libSACdec/src/sac_smoothing.h',
293+
'libSACdec/src/sac_stp.h',
294+
'libSACdec/src/sac_tsd.h',
295+
'libSACenc/src/sacenc_bitstream.h',
296+
'libSACenc/src/sacenc_const.h',
297+
'libSACenc/src/sacenc_delay.h',
298+
'libSACenc/src/sacenc_dmx_tdom_enh.h',
299+
'libSACenc/src/sacenc_filter.h',
300+
'libSACenc/src/sacenc_framewindowing.h',
301+
'libSACenc/src/sacenc_huff_tab.h',
302+
'libSACenc/src/sacenc_nlc_enc.h',
303+
'libSACenc/src/sacenc_onsetdetect.h',
304+
'libSACenc/src/sacenc_paramextract.h',
305+
'libSACenc/src/sacenc_staticgain.h',
306+
'libSACenc/src/sacenc_tree.h',
307+
'libSACenc/src/sacenc_vectorfunctions.h',
308+
'libSBRdec/src/env_calc.h',
309+
'libSBRdec/src/env_dec.h',
310+
'libSBRdec/src/env_extr.h',
311+
'libSBRdec/src/hbe.h',
312+
'libSBRdec/src/HFgen_preFlat.h',
313+
'libSBRdec/src/huff_dec.h',
314+
'libSBRdec/src/lpp_tran.h',
315+
'libSBRdec/src/psbitdec.h',
316+
'libSBRdec/src/psdec.h',
317+
'libSBRdec/src/psdec_drm.h',
318+
'libSBRdec/src/pvc_dec.h',
319+
'libSBRdec/src/sbr_deb.h',
320+
'libSBRdec/src/sbr_dec.h',
321+
'libSBRdec/src/sbr_ram.h',
322+
'libSBRdec/src/sbr_rom.h',
323+
'libSBRdec/src/sbrdec_drc.h',
324+
'libSBRdec/src/sbrdec_freq_sca.h',
325+
'libSBRdec/src/transcendent.h',
326+
'libSBRenc/src/bit_sbr.h',
327+
'libSBRenc/src/cmondata.h',
328+
'libSBRenc/src/code_env.h',
329+
'libSBRenc/src/env_bit.h',
330+
'libSBRenc/src/env_est.h',
331+
'libSBRenc/src/fram_gen.h',
332+
'libSBRenc/src/invf_est.h',
333+
'libSBRenc/src/mh_det.h',
334+
'libSBRenc/src/nf_est.h',
335+
'libSBRenc/src/ps_bitenc.h',
336+
'libSBRenc/src/ps_const.h',
337+
'libSBRenc/src/ps_encode.h',
338+
'libSBRenc/src/ps_main.h',
339+
'libSBRenc/src/resampler.h',
340+
'libSBRenc/src/sbr.h',
341+
'libSBRenc/src/sbr_def.h',
342+
'libSBRenc/src/sbr_misc.h',
343+
'libSBRenc/src/sbrenc_freq_sca.h',
344+
'libSBRenc/src/sbrenc_ram.h',
345+
'libSBRenc/src/sbrenc_rom.h',
346+
'libSBRenc/src/ton_corr.h',
347+
'libSBRenc/src/tran_det.h',
348+
'libPCMutils/src/version.h'
349+
)
350+
351+
cc = meson.get_compiler('c')
352+
m_dep = cc.find_library('m', required : false)
353+
354+
fdk_aac = shared_library(
355+
'fdk_aac',
356+
fdk_aac_src,
357+
build_by_default : true,
358+
dependencies: [m_dep],
359+
include_directories : fdk_aac_inc,
360+
install : true,
361+
cpp_args : ['-fno-exceptions', '-fno-rtti', '-Dfdk_aac_EXPORTS'],
362+
)
363+
364+
fdk_aac_dep = declare_dependency(
365+
link_with : fdk_aac,
366+
dependencies : [m_dep],
367+
include_directories : fdk_aac_inc
368+
)
369+
370+
pkgc = import('pkgconfig')
371+
pkgc.generate(name: 'fdk-aac',
372+
version: meson.project_version(),
373+
description: 'AAC codec library'
374+
)
375+
376+
if not get_option('build-programs').disabled()
377+
executable(
378+
'aac-enc',
379+
files('aac-enc.c', 'wavreader.c'),
380+
dependencies: fdk_aac_dep
381+
)
382+
endif

meson_options.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
option('build-programs', type : 'feature', value : 'auto')

0 commit comments

Comments
 (0)