1# mach interface
2mig = find_program('mig')
3mach_startup = custom_target('mach_startup',
4    command: [mig,
5              '-sheader', '@OUTPUT0@', '-header', '@OUTPUT2@',
6              '-server', '@OUTPUT1@', '-user', '@OUTPUT3@',
7              '@INPUT@'],
8    input: 'mach_startup.defs',
9    output: ['mach_startupServer.h',
10             'mach_startupServer.c',
11             'mach_startup.h',
12             'mach_startupUser.c'],
13)
14
15mach_startup_dep = declare_dependency(
16    sources: mach_startup[2] # mach_startup.h
17)
18
19# common defines
20xquartz_defs = [
21    bundle_id_def,
22    '-DXSERVER_VERSION="@0@"'.format(meson.project_version()),
23    '-DX11BINDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('bindir'))),
24]
25
26# X11.bin
27x11appdir = join_paths(bundle_root, 'Contents/MacOS')
28
29x11_bin_deps = [
30     meson.get_compiler('c').find_library('Xplugin'),
31     dependency('Carbon', method: 'extraframework'),
32     cocoa,
33     dependency('CoreAudio', method: 'extraframework'),
34     dependency('IOKit', method: 'extraframework')
35]
36
37if build_glx
38    x11_bin_deps += [dependency('OpenGL', method: 'extraframework')]
39endif
40
41if build_sparkle
42    x11_bin_deps += sparkle
43endif
44
45x11_bin_libs = [
46    libXquartz,
47    libXquartzXpr,
48    libxpbproxy,
49    libxserver_fb,
50    libxserver,
51    libxserver_xkb_stubs,
52]
53
54if build_glx
55   x11_bin_libs += [libcglcore, libxserver_glx, libglxvnd]
56endif
57
58x11_bin = executable('X11.bin',
59     [
60      'bundle-main.c',
61      mach_startup[1], # mach_startupServer.c
62      mach_startup[3], # mach_startupUser.c
63     ],
64     link_with: x11_bin_libs,
65     dependencies: [xproto_dep, x11_bin_deps, mach_startup_dep],
66     include_directories: [inc, '..', top_dir_inc],
67     c_args: xquartz_defs,
68     link_args: ['-Objc'],
69     install: true,
70     install_dir: x11appdir,
71)
72
73# X11 (Bundle trampoline)
74x11 = executable('X11',
75     [
76      'bundle_trampoline.c',
77     ],
78     c_args: xquartz_defs,
79     link_args: ['-Objc'],
80     install: true,
81     install_dir: x11appdir,
82)
83
84# Xquartz
85xquartz_deps = [
86    dependency('CoreServices', method: 'extraframework'),
87]
88
89xquartz = executable('Xquartz',
90    [
91     'stub.c',
92     'launchd_fd.c',
93     mach_startup[3], # mach_startupUser.c
94    ],
95    include_directories: inc,
96    c_args: xquartz_defs,
97    dependencies: [xquartz_deps, mach_startup_dep],
98    install: true,
99)
100