summaryrefslogtreecommitdiff
path: root/HACKING
blob: 64a6984c7a6229895755880e6d449c53ac403f6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
dconf is split into a large number of small modules.  This is required
because of the client/server architecture as well as the wide variety of
situations that dconf is used in on the client side.

gvdb/:

  This code implements the GVDB file format used for the on-disk
  database.  GVDB is shared with a number of other users and lives in a
  separate 'gvdb' module on git.gnome.org.

  Changes should never be made to this directory.  Instead, they should
  be made against the 'gvdb' module and merged using git.

  The code is split into a reader and a writer (builder).

  This directory doesn't produce any libraries.  The source files are
  included into other libraries and executables by direct inclusion of
  these source files into the Makefiles of other directories.

common/:

  Sources in this directory are used in both the dconf-service and
  client-side library implementations.

  This directory produces two libraries: libdconf-common.a and
  libdconf-common-shared.a.  They are exactly the same, except that
  libdconf-common-shared.a was compiled with -fPIC.

engine/:

  This directory contains most of the core logic for implementing the
  client-side of dconf.

  The engine code requires (but does not contain) glue code for speaking
  to D-Bus.  All users of the engine must therefore include a module
  that implements this glue.

  This directory produces one library: libdconf-engine.a.  This library
  includes the gvdb-reader.

gdbus/:

  This directory contains the glue code for dconf over GDBus.

  This directory produces one library: libdconf-gdbus.a.

client/:

  This is the standard GObject client-side library used for direct access to
  dconf.  It uses the GDBus glue from the gdbus/ directory above.

  This directory produces the libdconf.so shared library.

gsettings/:

  This is the GSettings backend for dconf.  It also uses GDBus.

  This directory produces the libdconfsettings.so GIOModule.

dbus-1/:

  This directory contains a client-side library based on libdbus-1.  It
  also contains the D-Bus glue code for libdbus-1 (since it is the only
  client-side library that is using it).

  This directory produces the libdconf-dbus-1.so shared library.

bin/:

  This is the 'dconf' commandline tool.  It uses the library from
  client/ above.

editor/:

  This is the graphical dconf-editor.  It also uses the client/ library.

service/:

  This is the dconf-service required for any client side library to do
  writes.