source and integrate yourfile into the whole system. Instructions
follow below. However, you'll notice that it's quite a bit
of work. Again, are you SURE you want it to become part
-of cygutils? Making a standalong program is a lot easier...
+of cygutils? Making a standalone program is a lot easier...
Also, note that I will not fix your bugs. If, at some time
after your program is accepted into cygutils, I (as cygutils
the blurb in the .c or .h file is just that: a short
blurb, with a reference to the full text elsewhere)
+ You should also add it to the licenses variable in
+ the toplevel Makefile.am: e.g.
+
+ licenses = ... licenses/COPYING.MPL ...
+
3) Make a home
create a new directory for your contribution underneath 'src'
If your contribution is windows-specific, then you should add it
to BOTH the "windows_progs" and the EXTRA_PROGRAMS variables:
- windows_progs = ... src/foo/foo ...
+ windows_progs = ... src/foo/foo ...
EXTRA_PROGRAMS = ... src/foo/foo ...
b) Special link libraries
or libncurses -- then you'll need to do a little more work.
For your initial submission, just create an LDADD variable in
Makefile.am with -lreadline (or whatever). We'll figure out how
- to handle it better further down the road. However, make sure
+ to handle it better further down the road. However, make sure
to let me know about your special link requirements.
- src_foo_foo_LDADD = -lreadline
+ src_foo_foo_LDADD = -lreadline
+
+ One special case is the gettext internationalization libraries.
+ If your program must link with -lintl, then all you need to
+ do is create an LDADD variable as follows:
+
+ src_foo_foo_LDADD = @LIBINTL@
- Note that you do NOT need to include the following libraries in
- a 'src_foo_foo_LDADD' line; these will be added automatically...
+ The configuration process will replace @LIBINTL@ with the
+ appropriate -lintl -liconv invocation.
- -lintl -lcygipc -lpopt (that is, gettext, cygipc, or popt)
+ Note that you do NOT need to include the popt library in
+ a 'src_foo_foo_LDADD' line; -lpopt will be added automatically...
+
+ If your app depends on IPC functions, then add @IPCLIBS@
+ to the 'src_foo_foo_LDADD' line.
c) man pages and other documentation
If you got 'em, copy 'em to your src/foo directory, and add the
- manpage to the man_MANS variable in Makefile.am like this:
+ manpage to the man_MANS variable in Makefile.am like this:
man_MANS = ... src/foo/foo.1 ...
- If there are non-man-page documentation files, you should those
- files to the EXTRA_DIST variable:
-
- EXTRA_DIST = ... src/foo/foo.README ...
-
- However, there is no provisiion for actually INSTALLING these
- additional documentation files. At least not yet.
+ If there are non-man-page documentation files, you should do
+ one of the following:
+ i) if your app is windows-specific, then create a new
+ variable inside the 'if WITH_WINDOWS_PROGRAMS' section
+ suffixed with '_docs', and list the documentation files
+ foo_docs = src/foo/README src/foo/TODO
+ Also, add those files to the extra_docs variable (which
+ gets automatically included in EXTRA_DIST)
+ extra_docs = src/foo/README src/foo/TODO
+ ii) otherwise, simply create the 'foo_docs' variable
+ outside of the 'if WITH_WINDOWS_PROGRAMS' section
+ These files will be installed into $(docdir)/foo/ so there
+ is no worry that your README will conflict with any other
+ component's README.
d) Extra files
src_foo_foo_SOURCES = foo.c otherfoo.c foo.h
- Note that this variable should NOT be specified if your program
- consists merely of a single .c file whose name is the same as
- your program + '.c'.
+ Note that this variable should NOT be specified if your program
+ consists merely of a single .c file whose name is the same as
+ your program + '.c'.
If there are .h files in your SOURCES list, then you need to
add those .h files to the noinst_HEADERS variable, or the headers
follow the "patterns" established in it by the other programs,
or (gasp) read the automake documentation.
+ Libraries are quite complicated to deal with in the cygutils
+ build framework. Fortunately I doubt there will be many of
+ these to worry about, other than cygicons.
+
6) Simplify your #includes.
Take a good look at the #include statements in your .c and .h
Add a short blurb about your app to <cygutils>/PROGLIST
Add your app to the list at the end of the README file
- Add your name to the AUTHORS file.
+ Add your name to the AUTHORS file. Don't worry about NEWS;
+ I do that before each release.
8) Bootstrap
If you haven't made any mistakes, you should (a) see no
errors, and (b) see some new rules in Makefile.in that
- correspond to your program.
+ correspond to your program.
9) Build and test
* src/foo: new directory
* src/foo/foo.c: new file
- * Makefile.am: add program 'foo'
- * Makefile.in: regenerate
+ * Makefile.am: add program 'foo'
+ * Makefile.in: regenerate
* AUTHORS: add yourname for foo
* PROGLIST: add foo
* README: add foo
the ChangeLog into that notice. But do NOT send the patch or
tarball to the mailing list.
- Instead, send that to ME, cwilson@ece.gatech.edu. The patch
+ Instead, send that to ME, cygwin@cwilson.fastmail.fm. The patch
and tarball should be attachments, but paste the ChangeLog entry
into the body of the message. Do NOT paste your patch into the
body of the email; most mail programs will horrendously distort