1project('wavbreaker', 'c',
2  version : '0.13',
3  default_options: [
4    'c_std=c99',
5    'warning_level=1',
6  ],
7)
8
9subdir('po')
10
11prefix = get_option('prefix')
12localedir = get_option('localedir')
13
14glib = dependency('glib-2.0')
15gtk3 = dependency('gtk+-3.0', version : '>= 3.22')
16ao = dependency('ao')
17
18cc = meson.get_compiler('c')
19libm = cc.find_library('m')
20
21deps = [glib, gtk3, ao]
22
23have_mpg123 = false
24if get_option('mp3')
25  mpg123 = dependency('libmpg123', required : false)
26  if mpg123.found()
27    have_mpg123 = true
28    deps += mpg123
29  endif
30endif
31
32wavbreaker_sources = [
33  'src/about.c',
34  'src/aoaudio.c',
35  'src/appconfig.c',
36  'src/autosplit.c',
37  'src/cdda.c',
38  'src/cue.c',
39  'src/draw.c',
40  'src/guimerge.c',
41  'src/moodbar.c',
42  'src/overwritedialog.c',
43  'src/popupmessage.c',
44  'src/reallyquit.c',
45  'src/sample.c',
46  'src/saveas.c',
47  'src/toc.c',
48  'src/wav.c',
49  'src/wavbreaker.c',
50]
51
52if get_option('windows_app')
53  windows = import('windows')
54  wavbreaker_sources += windows.compile_resources('data/wavbreaker.rc')
55endif
56
57add_project_arguments(['-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE_SOURCE',
58  '-DGTK_DISABLE_SINGLE_INCLUDES', '-DGSEAL_ENABLE',
59  '-DGDK_DISABLE_DEPRECATED', '-DGTK_DISABLE_DEPRECATED'], language : 'c')
60
61conf = configuration_data()
62# Surround the version in quotes to make it a C string
63conf.set_quoted('VERSION', meson.project_version())
64conf.set_quoted('PACKAGE', meson.project_name())
65conf.set_quoted('LOCALEDIR', join_paths(prefix, localedir))
66conf.set('WANT_MOODBAR', get_option('moodbar'))
67conf.set('HAVE_MPG123', have_mpg123)
68configure_file(output : 'config.h',
69               configuration : conf)
70
71meta = configuration_data()
72meta.set('VERSION', meson.project_version())
73info_plist = configure_file(output : 'Info.plist',
74                            input : 'data/Info.plist.in',
75                            configuration : meta)
76
77if get_option('macos_app')
78  install_data('data/wavbreaker.icns', install_dir : 'Contents/Resources')
79  install_data(info_plist, install_dir : 'Contents')
80else
81  install_data('data/net.sourceforge.wavbreaker.desktop', install_dir: get_option('datadir') + '/applications')
82  icon_dir = get_option('datadir') + '/icons/hicolor'
83  install_data('data/net.sourceforge.wavbreaker.svg', install_dir: icon_dir + '/scalable/apps')
84endif
85
86install_man('man/wavbreaker.1')
87install_man('man/wavinfo.1')
88install_man('man/wavmerge.1')
89
90executable('wavbreaker',
91           wavbreaker_sources,
92           dependencies : deps,
93           gui_app : true,
94           install : true)
95
96executable('wavmerge',
97           'src/wavmerge.c',
98           'src/wav.c',
99           dependencies : [glib],
100           install : true)
101
102executable('wavgen',
103           'src/wavgen.c',
104           'src/wav.c',
105           dependencies : [glib, libm],
106           install : true)
107
108executable('wavinfo',
109           'src/wavinfo.c',
110           'src/wav.c',
111           dependencies : [glib],
112           install : true)
113