Add gtk-doc to fix build error
[platform/core/graphics/cairo.git] / HACKING
1 Hacking Cairo
2 =============
3
4 This is a high-level guide to how the cairo distribution is organized
5 and how to get started hacking on it.  Make sure you read through the
6 file README before continuing.
7
8
9 Coding Style
10 ------------
11
12 The easiest way to write code in the cairo style is to follow code close
13 to the place you are hacking, but if you want a written down set of
14 rules, see file CODING_STYLE.
15
16 Files for backends that depend on languages other than C (C++ or
17 Objective C for example) may use features specific to those languages.
18 For example, "//" comments are allowed, though discouraged, in those files.
19
20
21 Contact
22 -------
23
24 Various ways to get in touch with other cairo developers and maintainers
25 have been enumerated at:
26
27         http://cairographics.org/contact/
28
29 Most of that information is also reflected in the following sections.
30
31
32 Mailing Lists
33 -------------
34
35 There are various mailing lists that are useful when developing cairo
36 code.  A complete list is always available at:
37
38         http://cairographics.org/lists/
39
40 It is recommended that cairo developers subscribe to all those lists.
41 The cairo list by itself generates much more traffic than the others
42 combined, so developers and contributors should not be intimidated by
43 the -commit and -bugs lists.
44
45
46 Bug Tracking System
47 -------------------
48
49 We use a standard bugzilla bug tracking system available at:
50
51         http://bugs.freedesktop.org/
52
53 See file named BUGS for detailed information on reporting bugs.  In short,
54 for straight bug reports, it's best to report them there such that they
55 are not lost or forgotten.  For discussion of new features or
56 complicated issues, use the mailing list.
57
58
59 IRC
60 ---
61
62 It's a great idea to hang around the cairo IRC channel if you have any
63 interest in cairo.  We use the #cairo channel on irc.freenode.net.
64
65 Make sure you introduce yourself if your nick is not easy to match to
66 the name you use on the mailing list.
67
68
69 Version Control System
70 ----------------------
71
72 We use /git/ for version control.  See:
73
74         http://cairographics.org/download/
75
76 For more information on using git, see:
77
78         http://freedesktop.org/wiki/Infrastructure/git/
79
80
81 Build System
82 ------------
83
84 We use the autotools build system with cairo, but with various
85 customizations and advanced features.  Reading configure.in is your
86 best bet to understanding it, or just ask on IRC.
87
88 To bootstrap the build system run ./autogen.sh.  After that the
89 regular "./configure; make; make install" sequence can be used.
90 See file named INSTALL for more details.
91
92 There is limited support for a win32 build system.
93 See README.win32 and Makefile.win32 files in various directories.
94
95
96 ChangeLog
97 ---------
98
99 We generate ChangeLog files automatically from the git commit log.
100 No manual ChangeLog writing is necessary.
101
102
103 Copyrights and Licensing
104 ------------------------
105
106 The cairo library is dual-licensed under LGPL and MPL.  See the file
107 named COPYING for details.  The test suites are more liberal, and are
108 allowed to include GPL code.
109
110 When writing new code, update the file headers to add your (or your
111 employers) copyright line and contributor line.  If adding new files
112 or splitting a file, copy the file header from other files.
113
114
115 Source Code
116 -----------
117
118 The library source code and headers live in the src/ directory.
119 See src/README for more information.
120
121
122 Regression Test Suite
123 ---------------------
124
125 Cairo has a fairly extensive regression-testing suite.  Indeed, without
126 these tests it would be impossible to make a cairo release without
127 introducing tens of regressions.  We still manage to introduce
128 regressions with each release even with the hundreds of tests we already
129 have.
130
131 The regression test suite is located under the test/ directory.
132 See test/README for more information.
133
134
135 Performance Test Suite
136 ----------------------
137
138 There is a performance test suite located under the perf/ directory.
139 A collection of traces of real-world behavior are also available in the
140 cairo-traces repository, which can be used in isolation or hooked in
141 with the main performance test suite.  See perf/README for more
142 information.
143
144
145 Boilerplate
146 -----------
147
148 The cairo-boilerplate is a small private library used by the regression
149 and performance test suites.  It includes the boilerplace code needed
150 to initialize various backends for the test suites, as well as allow
151 tweaking some of the internal workings of the backends for more testing.
152
153 The boilerplate code is localted under the boilerplate/ directory.
154 See boilerplate/README for more information.
155
156
157 Documentation
158 -------------
159
160 Cairo uses the gtk-doc system for reference API documentation.
161
162 The reference documentation is located under doc/public.
163 See doc/public/README for more information.
164
165 For more documentation including frequently asked questions, tutorials,
166 samples, roadmap, todo list, etc visit:
167
168         http://cairographics.org/documentation/
169
170 Some of those should gradually be moved to doc/.
171
172
173 Utilities
174 ---------
175
176 We have developed several utilities useful for writing cairo or code
177 that uses cairo.  These tools can be found under the util/ directory.
178 See util/README for more information.
179
180
181 Releasing
182 ---------
183
184 Now you are a cairo maintainer, so what?  See file named RELEASING.
185