]> git.meshlink.io Git - catta/blob - docs/HACKING
Move all docs to docs/
[catta] / docs / HACKING
1 Please comply with the following rules when hacking on Avahi:
2
3  * When you add a new textual file to the repository please enable SVN
4    keyword expansion for it:
5        
6        svn ps svn:keywords Id foo.c
7
8  * Before commiting check with "svn st" that all built files are ignored
9    by svn. To change the list of ignored files  use 
10    
11        svn pe svn:ignore .
12
13    This is similar to the ".cvsignore" file in CVS times.
14
15  * Don't forget to add the autoconf config.h inclusion to all C source files:
16    
17    #ifdef HAVE_CONFIG_H
18    #include <config.h>
19    #endif
20
21    This needs to be placed in in .c files only. NOT IN HEADER FILES!
22
23  * Don't hardcode any paths in source files. Either use the -D option of gcc
24    for C sources or use "sed" to replace them based on a .in file.
25
26  * Never forget that Avahi should be buildable without DBUS, GTK or python!
27
28  * When you code in C, please compile with the following gcc options from time
29    to time:
30   
31    -Wextra
32    -Wfloat-equal 
33    -Wmissing-declarations
34    -Wmissing-prototypes
35    -Wstrict-prototypes
36    -Wredundant-decls
37    -Wold-style-definition
38    -Wmissing-noreturn
39    -Wdeclaration-after-statement
40    -Wshadow
41    -Wendif-labels
42    -Wlarger-than-4000
43    -Wpointer-arith
44    -Wbad-function-cast
45    -Wcast-qual
46    -Wcast-align
47    -Wwrite-strings
48    -Winline
49
50    This will show you a bunch of issues which might be problems in your source
51    code.  Not all options are available on all GCC versions. Just pass these
52    options in $CFLAGS when running bootstrap.sh:
53
54    CFLAGS="-Wextra ..." ./bootstrap.sh
55
56  * Whenever you add a new Makefile.am, C (.c or .h) source file, shell or
57    python script please add this legal blurb to its header:
58
59    For Makefile.am, python and shell code:
60
61 <snip>
62 # $Id$
63
64 # This file is part of avahi.
65 #
66 # avahi is free software; you can redistribute it and/or modify it
67 # under the terms of the GNU Lesser General Public License as
68 # published by the Free Software Foundation; either version 2 of the
69 # License, or (at your option) any later version.
70 #
71 # avahi is distributed in the hope that it will be useful, but WITHOUT
72 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
73 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
74 # License for more details.
75 #
76 # You should have received a copy of the GNU Lesser General Public
77 # License along with avahi; if not, write to the Free Software
78 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
79 # USA.
80 </snip>
81
82    For C source code:
83
84 <snip>
85 /* $Id$ */
86
87 /***
88   This file is part of avahi.
89
90   avahi is free software; you can redistribute it and/or modify it
91   under the terms of the GNU Lesser General Public License as
92   published by the Free Software Foundation; either version 2.1 of the
93   License, or (at your option) any later version.
94
95   avahi is distributed in the hope that it will be useful, but WITHOUT
96   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
97   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
98   Public License for more details.
99
100   You should have received a copy of the GNU Lesser General Public
101   License along with avahi; if not, write to the Free Software
102   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
103   USA.
104 ***/
105 </snip>
106
107
108 $Id$