1subdir('trashlib') 2 3# D-Bus and systemd service files 4dbus_service = gvfs_namespace + '.Daemon' 5dbus_exec = 'gvfsd' 6dbus_systemd_service = '' 7 8if install_systemd_systemduserunitdir 9 service = 'gvfs-daemon.service' 10 11 configure_file( 12 input: service + '.in', 13 output: '@BASENAME@', 14 configuration: service_conf, 15 install: true, 16 install_dir: systemd_systemduserunitdir, 17 ) 18 19 dbus_systemd_service = 'SystemdService=' + service 20endif 21 22dbus_service_conf = { 23 'service': dbus_service, 24 'exec': gvfs_prefix / gvfs_libexecdir / dbus_exec, 25 'systemd_service': dbus_systemd_service, 26} 27 28daemon_service = configure_file( 29 input: dbus_service_in, 30 output: dbus_service + '.service', 31 configuration: dbus_service_conf, 32 install: true, 33 install_dir: dbus_session_bus_services_dir, 34) 35 36gnome.mkenums( 37 'org.gnome.system.gvfs.enums.xml', 38 sources: 'gvfs-enums.h', 39 comments: '<!-- @comment@ -->', 40 fhead: '<schemalist>', 41 vhead: ' <@type@ id="org.gnome.system.gvfs.@EnumName@">', 42 vprod: ' <value nick="@valuenick@" value="@valuenum@"/>', 43 vtail: ' </@type@>', 44 ftail: '</schemalist>', 45 install_header: true, 46 install_dir: gio_schemasdir, 47) 48 49sources = files( 50 'gvfsbackend.c', 51 'gvfschannel.c', 52 'gvfsdaemon.c', 53 'gvfsdaemonutils.c', 54 'gvfsjob.c', 55 'gvfsjobcloseread.c', 56 'gvfsjobclosewrite.c', 57 'gvfsjobcopy.c', 58 'gvfsjobcreatemonitor.c', 59 'gvfsjobdbus.c', 60 'gvfsjobdelete.c', 61 'gvfsjobenumerate.c', 62 'gvfsjoberror.c', 63 'gvfsjobmakedirectory.c', 64 'gvfsjobmakesymlink.c', 65 'gvfsjobmount.c', 66 'gvfsjobmountmountable.c', 67 'gvfsjobmove.c', 68 'gvfsjobopenforread.c', 69 'gvfsjobopenforwrite.c', 70 'gvfsjobopeniconforread.c', 71 'gvfsjobpollmountable.c', 72 'gvfsjobprogress.c', 73 'gvfsjobpull.c', 74 'gvfsjobpush.c', 75 'gvfsjobqueryattributes.c', 76 'gvfsjobqueryfsinfo.c', 77 'gvfsjobqueryinfo.c', 78 'gvfsjobqueryinforead.c', 79 'gvfsjobqueryinfowrite.c', 80 'gvfsjobread.c', 81 'gvfsjobseekread.c', 82 'gvfsjobseekwrite.c', 83 'gvfsjobsetattribute.c', 84 'gvfsjobsetdisplayname.c', 85 'gvfsjobsource.c', 86 'gvfsjobstartmountable.c', 87 'gvfsjobstopmountable.c', 88 'gvfsjobtrash.c', 89 'gvfsjobtruncate.c', 90 'gvfsjobunmount.c', 91 'gvfsjobunmountmountable.c', 92 'gvfsjobwrite.c', 93 'gvfskeyring.c', 94 'gvfsmonitor.c', 95 'gvfsreadchannel.c', 96 'gvfswritechannel.c', 97) 98 99deps = socket_deps + [ 100 gio_unix_dep, 101 libgvfscommon_dep, 102 gsettings_desktop_schemas_dep, 103] 104 105if enable_gcr 106 deps += gcr_dep 107endif 108 109if enable_keyring 110 deps += libsecret_dep 111endif 112 113cflags = [ 114 '-DLIBEXEC_DIR="@0@"'.format(gvfs_prefix / gvfs_libexecdir), 115 '-DMOUNTABLE_DIR="@0@"'.format(gvfs_prefix / gvfs_mounts_dir), 116 '-DGVFS_LOCALEDIR="@0@"'.format(gvfs_prefix / gvfs_localedir), 117] 118 119libgvfsdaemon = shared_library( 120 'gvfsdaemon', 121 sources: sources, 122 include_directories: top_inc, 123 dependencies: deps, 124 c_args: cflags, 125 install: true, 126 install_rpath: gvfs_rpath, 127 install_dir: gvfs_pkglibdir, 128) 129 130libgvfsdaemon_dep = declare_dependency( 131 include_directories: include_directories('.'), 132 dependencies: libgvfscommon_dep, 133 compile_args: cflags, 134 link_with: libgvfsdaemon, 135) 136 137sources = files( 138 'main.c', 139 'mount.c', 140) 141 142executable( 143 'gvfsd', 144 sources, 145 include_directories: top_inc, 146 dependencies: libgvfsdaemon_dep, 147 install: true, 148 install_rpath: gvfs_rpath, 149 install_dir: gvfs_libexecdir, 150) 151 152daemon_main_sources = files( 153 'daemon-main.c', 154 'daemon-main-generic.c', 155) 156 157programs = [] 158mounts = [] 159schema_data = [] 160convert_data = [] 161 162cflags = [ 163 '-DBACKEND_HEADER=gvfsbackendlocaltest.h', 164 '-DDEFAULT_BACKEND_TYPE=localtest', 165 '-DBACKEND_TYPES="localtest", G_VFS_TYPE_BACKEND_LOCALTEST,', 166] 167 168programs += [['gvfsd-localtest', {'sources': files('gvfsbackendlocaltest.c'), 'c_args': cflags}]] 169mounts += ['localtest'] 170 171sources = files( 172 'gvfsbackendftp.c', 173 'gvfsftpconnection.c', 174 'gvfsftpdircache.c', 175 'gvfsftpfile.c', 176 'gvfsftptask.c', 177 'ParseFTPList.c', 178) 179 180cflags = [ 181 '-DBACKEND_HEADER=gvfsbackendftp.h', 182 '-DDEFAULT_BACKEND_TYPE=ftp', 183 '-DBACKEND_TYPES="ftp", G_VFS_TYPE_BACKEND_FTP, "ftps", G_VFS_TYPE_BACKEND_FTP, "ftpis", G_VFS_TYPE_BACKEND_FTP,', 184 '-DMAX_JOB_THREADS=10', 185] 186 187programs += [['gvfsd-ftp', {'sources': sources, 'c_args': cflags}]] 188mounts += ['ftp', 'ftps', 'ftpis'] 189 190cflags = [ 191 '-DBACKEND_HEADER=gvfsbackendtrash.h', 192 '-DDEFAULT_BACKEND_TYPE=trash', 193 '-DBACKEND_TYPES="trash", G_VFS_TYPE_BACKEND_TRASH,', 194 '-DMAX_JOB_THREADS=10', 195] 196 197programs += [['gvfsd-trash', {'sources': files('gvfsbackendtrash.c'), 'dependencies': [libtrash_dep], 'c_args': cflags}]] 198mounts += ['trash'] 199 200cflags = [ 201 '-DBACKEND_HEADER=gvfsbackendrecent.h', 202 '-DDEFAULT_BACKEND_TYPE=recent', 203 '-DBACKEND_TYPES="recent", G_VFS_TYPE_BACKEND_RECENT,', 204 '-DBACKEND_USES_GVFS=1', 205 '-DMAX_JOB_THREADS=10', 206] 207 208programs += [['gvfsd-recent', {'sources': files('gvfsbackendrecent.c'), 'c_args': cflags}]] 209mounts += ['recent'] 210 211cflags = [ 212 '-DBACKEND_HEADER=gvfsbackendcomputer.h', 213 '-DDEFAULT_BACKEND_TYPE=computer', 214 '-DBACKEND_TYPES="computer", G_VFS_TYPE_BACKEND_COMPUTER,', 215 '-DBACKEND_USES_GVFS=1', 216 '-DMAX_JOB_THREADS=1', 217] 218 219programs += [['gvfsd-computer', {'sources': files('gvfsbackendcomputer.c'), 'dependencies': [gio_unix_dep], 'c_args': cflags}]] 220mounts += ['computer'] 221 222cflags = [ 223 '-DBACKEND_HEADER=gvfsbackendnetwork.h', 224 '-DDEFAULT_BACKEND_TYPE=network', 225 '-DBACKEND_TYPES="network", G_VFS_TYPE_BACKEND_NETWORK,', 226 '-DBACKEND_USES_GVFS=1', 227 '-DMAX_JOB_THREADS=1', 228] 229 230programs += [['gvfsd-network', {'sources': files('gvfsbackendnetwork.c'), 'c_args': cflags}]] 231mounts += ['network'] 232 233cflags = [ 234 '-DBACKEND_HEADER=gvfsbackendburn.h', 235 '-DDEFAULT_BACKEND_TYPE=burn', 236 '-DBACKEND_TYPES="burn", G_VFS_TYPE_BACKEND_BURN,', 237 '-DMAX_JOB_THREADS=1', 238] 239 240programs += [['gvfsd-burn', {'sources': files('gvfsbackendburn.c'), 'dependencies': [gio_unix_dep], 'c_args': cflags}]] 241mounts += ['burn'] 242 243if enable_sftp 244 sources = files( 245 'gvfsbackendsftp.c', 246 'pty_open.c', 247 ) 248 249 deps = socket_deps + [ 250 gio_unix_dep, 251 util_dep 252 ] 253 254 cflags = [ 255 '-DBACKEND_HEADER=gvfsbackendsftp.h', 256 '-DDEFAULT_BACKEND_TYPE=sftp', 257 '-DBACKEND_TYPES="sftp", G_VFS_TYPE_BACKEND_SFTP,', 258 '-DMAX_JOB_THREADS=1', 259 '-DSSH_PROGRAM="@0@"'.format(ssh.path()), 260 ] 261 262 programs += [['gvfsd-sftp', {'sources': sources, 'dependencies': deps, 'c_args': cflags}]] 263 mounts += ['sftp'] 264endif 265 266if enable_samba 267 sources = files('gvfsbackendsmb.c') 268 269 cflags = [ 270 '-DBACKEND_HEADER=gvfsbackendsmb.h', 271 '-DDEFAULT_BACKEND_TYPE=smb', 272 '-DBACKEND_TYPES="smb-share", G_VFS_TYPE_BACKEND_SMB,', 273 '-DMAX_JOB_THREADS=1', 274 ] 275 276 programs += [['gvfsd-smb', {'sources': sources, 'dependencies': [smbclient_dep], 'c_args': cflags}]] 277 mounts += ['smb'] 278 schema_data += files('org.gnome.system.smb.gschema.xml') 279 convert_data += files('gvfs-smb.convert') 280 281 cflags = [ 282 '-DBACKEND_HEADER=gvfsbackendsmbbrowse.h', 283 '-DDEFAULT_BACKEND_TYPE=smb-network', 284 '-DBACKEND_TYPES="smb-network", G_VFS_TYPE_BACKEND_SMB_BROWSE, "smb-server", G_VFS_TYPE_BACKEND_SMB_BROWSE,', 285 '-DMAX_JOB_THREADS=1', 286 '-DMOUNTABLE_DBUS_NAME=' + gvfs_namespace + '.mountpoint_smb_browse', 287 ] 288 289 programs += [['gvfsd-smb-browse', {'sources': sources + files('gvfsbackendsmbbrowse.c'), 'dependencies': [smbclient_dep], 'c_args': cflags}]] 290 mounts += ['smb-browse'] 291endif 292 293if enable_dnssd 294 deps = [ 295 avahi_client_dep, 296 avahi_glib_dep, 297 libgvfscommon_dnssd_dep, 298 ] 299 300 cflags = [ 301 '-DBACKEND_HEADER=gvfsbackenddnssd.h', 302 '-DDEFAULT_BACKEND_TYPE=dns-sd', 303 '-DBACKEND_TYPES="dns-sd", G_VFS_TYPE_BACKEND_DNS_SD,', 304 '-DMAX_JOB_THREADS=1', 305 '-DMOUNTABLE_DBUS_NAME=' + gvfs_namespace + '.mountpoint_dnssd', 306 ] 307 308 programs += [['gvfsd-dnssd', {'sources': files('gvfsbackenddnssd.c'), 'dependencies': deps, 'c_args': cflags}]] 309 mounts += ['dns-sd'] 310 schema_data += files('org.gnome.system.dns_sd.gschema.xml') 311 convert_data += files('gvfs-dns-sd.convert') 312endif 313 314if enable_archive 315 cflags = [ 316 '-DBACKEND_HEADER=gvfsbackendarchive.h', 317 '-DDEFAULT_BACKEND_TYPE=archive', 318 '-DBACKEND_TYPES="archive", G_VFS_TYPE_BACKEND_ARCHIVE,', 319 '-DMAX_JOB_THREADS=1', 320 '-DBACKEND_USES_GVFS=1', 321 ] 322 323 programs += [['gvfsd-archive', {'sources': files('gvfsbackendarchive.c'), 'dependencies': [libarchive_dep], 'c_args': cflags}]] 324 mounts += ['archive'] 325endif 326 327if enable_cdda 328 deps = [ 329 gudev_dep, 330 libcdio_paranoia_dep, 331 ] 332 333 cflags = [ 334 '-DBACKEND_HEADER=gvfsbackendcdda.h', 335 '-DDEFAULT_BACKEND_TYPE=cdda', 336 '-DBACKEND_TYPES="cdda", G_VFS_TYPE_BACKEND_CDDA,', 337 '-DMAX_JOB_THREADS=1', 338 ] 339 340 programs += [['gvfsd-cdda', {'sources': files('gvfsbackendcdda.c'), 'dependencies': deps, 'c_args': cflags}]] 341 mounts += ['cdda'] 342endif 343 344if enable_admin 345 deps = [ 346 libcap_dep, 347 polkit_gobject_dep, 348 ] 349 350 cflags = [ 351 '-DBACKEND_HEADER=gvfsbackendadmin.h', 352 '-DDEFAULT_BACKEND_TYPE=admin', 353 '-DBACKEND_TYPES="admin", G_VFS_TYPE_BACKEND_ADMIN,', 354 '-DMOUNTABLE_DBUS_NAME=' + gvfs_namespace + '.mountpoint_admin', 355 ] 356 357 programs += [['gvfsd-admin', {'sources': files('gvfsbackendadmin.c'), 'dependencies': deps, 'c_args': cflags}]] 358 mounts += ['admin'] 359 360 policy = gvfs_namespace + '.file-operations.policy' 361 362 policy_in = configure_file( 363 input: policy + '.in.in', 364 output: '@BASENAME@', 365 configuration: service_conf, 366 ) 367 368 i18n.merge_file( 369 policy, 370 input: policy_in, 371 output: '@BASENAME@', 372 po_dir: po_dir, 373 install: true, 374 install_dir: gvfs_datadir / 'polkit-1/actions', 375 ) 376 377 install_data( 378 gvfs_namespace + '.file-operations.rules', 379 install_dir: gvfs_datadir / 'polkit-1/rules.d', 380 ) 381endif 382 383if enable_google 384 deps = [ 385 goa_dep, 386 libgdata_dep, 387 ] 388 389 cflags = [ 390 '-DBACKEND_HEADER=gvfsbackendgoogle.h', 391 '-DDEFAULT_BACKEND_TYPE=google-drive', 392 '-DBACKEND_TYPES="google-drive", G_VFS_TYPE_BACKEND_GOOGLE,', 393 ] 394 395 programs += [['gvfsd-google', {'sources': files('gvfsbackendgoogle.c'), 'dependencies': deps, 'c_args': cflags}]] 396 mounts += ['google'] 397endif 398 399if enable_gphoto2 400 deps = [ 401 gio_unix_dep, 402 libgphoto2_dep, 403 libgvfscommon_gphoto2_dep, 404 ] 405 406 cflags = [ 407 '-DBACKEND_HEADER=gvfsbackendgphoto2.h', 408 '-DDEFAULT_BACKEND_TYPE=gphoto2', 409 '-DBACKEND_TYPES="gphoto2", G_VFS_TYPE_BACKEND_GPHOTO2,', 410 '-DMAX_JOB_THREADS=1', 411 ] 412 413 programs += [['gvfsd-gphoto2', {'sources': files('gvfsbackendgphoto2.c'), 'dependencies': deps, 'c_args': cflags}]] 414 mounts += ['gphoto2'] 415endif 416 417if enable_mtp 418 deps = [ 419 libgvfscommon_gphoto2_dep, 420 libmtp_dep 421 ] 422 423 cflags = [ 424 '-DBACKEND_HEADER=gvfsbackendmtp.h', 425 '-DDEFAULT_BACKEND_TYPE=mtp', 426 '-DBACKEND_TYPES="mtp", G_VFS_TYPE_BACKEND_MTP,', 427 '-DMAX_JOB_THREADS=1', 428 ] 429 430 if enable_libusb 431 deps += libusb_dep 432 endif 433 434 programs += [['gvfsd-mtp', {'sources': files('gvfsbackendmtp.c'), 'dependencies': deps, 'c_args': cflags}]] 435 mounts += ['mtp'] 436endif 437 438if enable_http 439 sources = files( 440 'gvfsbackendhttp.c', 441 'gvfshttpinputstream.c', 442 ) 443 444 deps = [ 445 libsoup_dep, 446 libxml_dep, 447 ] 448 449 cflags = [ 450 '-DBACKEND_HEADER=gvfsbackendhttp.h', 451 '-DDEFAULT_BACKEND_TYPE=http', 452 '-DBACKEND_TYPES="http", G_VFS_TYPE_BACKEND_HTTP,', 453 '-DMAX_JOB_THREADS=1', 454 '-DMOUNTABLE_DBUS_NAME=' + gvfs_namespace + '.mountpoint_http', 455 ] 456 457 programs += [['gvfsd-http', {'sources': sources, 'dependencies': deps, 'c_args': cflags}]] 458 mounts += ['http'] 459 460 cflags = [ 461 '-DBACKEND_HEADER=gvfsbackenddav.h', 462 '-DDEFAULT_BACKEND_TYPE=dav', 463 '-DMAX_JOB_THREADS=1', 464 ] 465 466 if enable_dnssd 467 deps += libgvfscommon_dnssd_dep 468 469 cflags += '-DBACKEND_TYPES="dav", G_VFS_TYPE_BACKEND_DAV, "dav+sd", G_VFS_TYPE_BACKEND_DAV, "davs+sd", G_VFS_TYPE_BACKEND_DAV,' 470 471 mounts += ['dav+sd'] 472 else 473 cflags += '-DBACKEND_TYPES="dav", G_VFS_TYPE_BACKEND_DAV,' 474 endif 475 476 programs += [['gvfsd-dav', {'sources': sources + files('gvfsbackenddav.c'), 'dependencies': deps, 'c_args': cflags}]] 477 mounts += ['dav'] 478endif 479 480if enable_afc 481 deps = [ 482 libimobiledevice_dep, 483 libplist_dep, 484 ] 485 486 cflags = [ 487 '-DBACKEND_HEADER=gvfsbackendafc.h', 488 '-DDEFAULT_BACKEND_TYPE=afc', 489 '-DBACKEND_TYPES="afc", G_VFS_TYPE_BACKEND_AFC,', 490 '-DMAX_JOB_THREADS=1', 491 '-DBACKEND_USES_GVFS=1', 492 ] 493 494 programs += [['gvfsd-afc', {'sources': files('gvfsbackendafc.c'), 'dependencies': deps, 'c_args': cflags}]] 495 mounts += ['afc'] 496endif 497 498if enable_afp 499 common_sources = files( 500 'gvfsafptypes.h', 501 'gvfsafputils.c', 502 'gvfsafpconnection.c', 503 'gvfsafpserver.c', 504 'gvfsafpvolume.c', 505 ) 506 507 deps = [] 508 if enable_gcrypt 509 deps += libgcrypt_dep 510 endif 511 512 cflags = [ 513 '-DBACKEND_HEADER=gvfsbackendafp.h', 514 '-DDEFAULT_BACKEND_TYPE=afp-volume', 515 '-DBACKEND_TYPES="afp-volume", G_VFS_TYPE_BACKEND_AFP,', 516 '-DMAX_JOB_THREADS=1', 517 ] 518 519 programs += [['gvfsd-afp', {'sources': common_sources + files('gvfsbackendafp.c'), 'dependencies': deps, 'c_args': cflags}]] 520 mounts += ['afp'] 521 522 cflags = [ 523 '-DBACKEND_HEADER=gvfsbackendafpbrowse.h', 524 '-DDEFAULT_BACKEND_TYPE=afp-server', 525 '-DBACKEND_TYPES="afp-server", G_VFS_TYPE_BACKEND_AFP_BROWSE,', 526 '-DMAX_JOB_THREADS=1', 527 ] 528 529 programs += [['gvfsd-afp-browse', {'sources': common_sources + files('gvfsbackendafpbrowse.c'), 'dependencies': deps, 'c_args': cflags}]] 530 mounts += ['afp-browse'] 531endif 532 533if enable_nfs 534 cflags = [ 535 '-DBACKEND_HEADER=gvfsbackendnfs.h', 536 '-DDEFAULT_BACKEND_TYPE=nfs', 537 '-DBACKEND_TYPES="nfs", G_VFS_TYPE_BACKEND_NFS,', 538 '-DMAX_JOB_THREADS=1', 539 ] 540 541 programs += [['gvfsd-nfs', {'sources': files('gvfsbackendnfs.c'), 'dependencies': [libnfs_dep], 'c_args': cflags}]] 542 mounts += ['nfs'] 543endif 544 545foreach program: programs 546 options = program[1] 547 kwargs = { 548 'sources': daemon_main_sources + options.get('sources', []), 549 'dependencies': [libgvfsdaemon_dep] + options.get('dependencies', []), 550 'c_args': options.get('c_args', ''), 551 } 552 553 executable( 554 program[0], 555 include_directories: top_inc, 556 kwargs: kwargs, 557 install: true, 558 install_rpath: gvfs_rpath, 559 install_dir: gvfs_libexecdir, 560 ) 561endforeach 562 563foreach mount: mounts 564 configure_file( 565 input: mount + '.mount.in', 566 output: '@BASENAME@', 567 configuration: service_conf, 568 install: true, 569 install_dir: gvfs_mounts_dir, 570 ) 571endforeach 572 573if enable_devel_utils 574 sources = daemon_main_sources + files('gvfsbackendtest.c') 575 576 cflags = [ 577 '-DBACKEND_HEADER=gvfsbackendtest.h', 578 '-DDEFAULT_BACKEND_TYPE=test', 579 '-DBACKEND_TYPES="test", G_VFS_TYPE_BACKEND_TEST,', 580 ] 581 582 executable( 583 'gvfsd-test', 584 sources, 585 include_directories: top_inc, 586 dependencies: libgvfsdaemon_dep, 587 c_args: cflags, 588 ) 589endif 590 591install_data( 592 schema_data, 593 install_dir: gio_schemasdir, 594) 595 596install_data( 597 convert_data, 598 install_dir: gvfs_datadir / 'GConf/gsettings', 599) 600