diff --git a/.gitignore b/.gitignore index fa2a8ac7e..1a58409d8 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ tags doc/protocol.html doc/protocol doc/user +doc/developer doc/sticker doc/api test/software_volume diff --git a/Makefile.am b/Makefile.am index e9ca647ec..d02eeb12b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -720,7 +720,7 @@ endif man_MANS = doc/mpd.1 doc/mpd.conf.5 doc_DATA = AUTHORS COPYING NEWS README UPGRADING doc/mpdconf.example -DOCBOOK_FILES = doc/protocol.xml doc/user.xml doc/sticker.xml +DOCBOOK_FILES = doc/protocol.xml doc/user.xml doc/developer.xml doc/sticker.xml if ENABLE_DOCUMENTATION protocoldir = $(docdir)/protocol @@ -729,6 +729,9 @@ protocol_DATA = $(wildcard doc/protocol/*.html) userdir = $(docdir)/user user_DATA = $(wildcard doc/user/*.html) +developerdir = $(docdir)/developer +developer_DATA = $(wildcard doc/developer/*.html) + if HAVE_XMLTO DOCBOOK_HTML = $(patsubst %.xml,%/index.html,$(DOCBOOK_FILES)) @@ -762,6 +765,7 @@ upload: $(DOCBOOK_HTML) doc/api/html/index.html --chmod=Dug+rwx,Do+rx,Fug+rw,Fo+r \ --include=protocol --include=protocol/** \ --include=user --include=user/** \ + --include=developer --include=developer/** \ --include=api --include=api/** \ --exclude=* diff --git a/doc/developer.xml b/doc/developer.xml new file mode 100644 index 000000000..c63e2c265 --- /dev/null +++ b/doc/developer.xml @@ -0,0 +1,105 @@ + + + + The Music Player Daemon - Developer's Manual + + + Introduction + + + This is a guide for those who wish to hack on the MPD source + code. MPD is an open project, and we are always happy about + contributions. So far, more than 50 people have contributed + patches. + + + + This document is work in progress. Most of it may be incomplete + yet. Please help! + + + + + Code Style + + + + + indent with tabs (width 8) + + + + + + don't write CPP when you can write C: use inline functions + and enums instead of macros + + + + + + the code should be C99 compliant, and must compile with + GCC; + clang support is highly desirable + + + + + + C++ is ok (for integrating C++ only libraries), but it + should be avoided + + + + + + Some example code: + + + static inline bool +foo(const char *abc, int xyz) +{ + if (abc == NULL) { + g_warning("Foo happened!\n"); + return -1; + } + + return xyz; +} + + + + + + + Hacking The Source + + + Always write your code against the latest git: + + + git clone git://git.musicpd.org/master/mpd.git + + + Configure with the options . Enable as many plugins as possible, + to be sure that you don't break any disabled code. + + + + Don't mix several changes in one single patch. Create a + separate patch for every change. Tools like + stgit help you with that. + + + + + Submitting Patches + + + Send your patches to the mailing list: + musicpd-dev-team@lists.sourceforge.net + + +