meson.build revision dc61d50d
1add_languages('objc')
2
3apple_applications_dir = get_option('apple-applications-dir')
4apple_application_name = get_option('apple-application-name')
5bundle_id_prefix = get_option('bundle-id-prefix')
6xquartz_sparkle_feed_url = get_option('sparkle-feed-url')
7xquartz_sparkle_public_edkey = get_option('sparkle-public-edkey')
8
9bundle_version_string = get_option('bundle-version-string') # CFBundleShortVersionString
10if bundle_version_string == 'auto'
11    bundle_version_string = meson.project_version()
12endif
13
14bundle_version = get_option('bundle-version') # CFBundleVersion
15if bundle_version == 'auto'
16    version_arr = bundle_version_string.split('.')
17    version_major = version_arr[0].to_int()
18    version_minor = version_arr[1].to_int()
19    version_tiny = version_arr[2].to_int()
20    bundle_version = '@0@.@1@.@2@'.format(version_major, version_minor, version_tiny)
21endif
22
23bundle_id_def = '-DBUNDLE_ID_PREFIX="@0@"'.format(bundle_id_prefix)
24
25bundle_root = join_paths(apple_applications_dir, apple_application_name + '.app')
26
27# using sparkle update framework?
28build_sparkle = xquartz_sparkle_feed_url != '' and xquartz_sparkle_public_edkey != ''
29if build_sparkle
30    sparkle = dependency('Sparkle', method: 'extraframework')
31
32    sparkle_defs = [
33        '-DXQUARTZ_SPARKLE',
34        '-DXQUARTZ_SPARKLE_FEED_URL=@0@'.format(xquartz_sparkle_feed_url),
35        '-DXQUARTZ_SPARKLE_PUBLIC_EDKEY=@0@'.format(xquartz_sparkle_public_edkey),
36    ]
37else
38    sparkle_defs = []
39endif
40
41# libxquartz
42srcs_libxquartz = [
43    'NSUserDefaults+XQuartzDefaults.m',
44    'X11Application.m',
45    'X11Controller.m',
46    'applewm.c',
47    'darwin.c',
48    'darwinEvents.c',
49    'darwinXinput.c',
50    'keysym2ucs.c',
51    'quartz.c',
52    'quartzKeyboard.c',
53    'quartzStartup.c',
54    'quartzRandR.c',
55    '../../mi/miinitext.c',
56    '../../mi/miinitext.h',
57]
58
59libxquartz_defs = [
60    '-DUSE_NEW_CLUT',
61    '-DX11LIBDIR="@0@"'.format(join_paths(get_option('prefix'),
62                               get_option('libdir'))),
63    '-DXFree86Server',
64    '-DXQUARTZ',
65    '-DXSERVER_VERSION="@0@"'.format(meson.project_version()),
66    bundle_id_def,
67    sparkle_defs,
68]
69
70if cc.has_function('dispatch_async')
71    libxquartz_defs += '-DHAVE_LIBDISPATCH'
72endif
73
74libXquartz = static_library('Xquartz',
75    srcs_libxquartz,
76    c_args: libxquartz_defs,
77    objc_args: libxquartz_defs,
78    include_directories: [inc, '../../pseudoramiX', '../../miext/rootless', top_dir_inc],
79    dependencies: [xproto_dep, pixman_dep],
80    link_with: [libxserver_pseudoramix, libxserver_miext_rootless],
81)
82
83subdir('bundle')
84if build_glx
85    subdir('GL')
86endif
87subdir('pbproxy')
88subdir('xpr')
89subdir('mach-startup')
90
91# manpage
92xquartz_man = configure_file(
93    input: 'man/Xquartz.man',
94    output: 'Xquartz.1',
95    configuration: manpage_config,
96)
97install_man(xquartz_man)
98