representable.
* Allow to use GTK's main loop instead of the select stuff in
- wait.c
+ wait.c. !!!
* cleanup the namespace - we use log_* assuan_* ascii_* mutex_*
But those are only used internally. Some linker tricks should make
it possible to hide them from the user (didn't work last time, try
- again).
+ again). !!
* Documentation
** Add note about GPGME clearing out pointer return values.
** validity/trust
-** Document gpgme.m4
* Engines
** Move code common to all engines up from gpg to engine.
*** For pipemode, make sure to release the pipemode callback data object.
* Operations
-** gpgme_wait needs to be made thread safe!!!
+** gpgme_wait needs to be made thread safe. !!!
+** Passphrase callback should not copy password. !!!
** Export status handler need much more work.
** Import should return a useful error when one happened.
** Genkey should return something more useful than General_Error.
reported by Stephane Corthesy.
* Error Values
-** Map ASSUAN/GpgSM ERR error values in a better way than is done now.
+** Map ASSUAN/GpgSM ERR error values in a better way than is done now. !!
** Verify (and document) if Read_Error, Write_Error, Pipe_Error set errno.
* Tests
** Write a fake gpg-agent so that we can supply known passphrases to
gpgsm and setup the configuration files to use the agent. Without
this we are testing a currently running gpg-agent which is not a
- clever idea.
+ clever idea. !
** t-data
*** Test gpgme_data_release_and_get_mem.
*** Test gpgme_data_rewind for invalid types.
* Debug
** Handle malloc and vasprintf errors. But decide first if they should be
- ignored (and logged with 255?!), or really be assertions.
+ ignored (and logged with 255?!), or really be assertions. !
* Build suite
** Make sure everything is cleaned correctly (esp. test area).
* Header:: What header file you need to include.
* Building the Source:: Compiler options to be used.
+* Using Automake:: Compiler options to be used the easy way.
* Library Version Check:: Getting and verifying the library version.
* Multi Threading:: How GPGME can be used in an MT environment.
@menu
* Header:: What header file you need to include.
* Building the Source:: Compiler options to be used.
+* Using Automake:: Compiler options to be used the easy way.
* Library Version Check:: Getting and verifying the library version.
* Multi Threading:: How GPGME can be used in an MT environment.
@end menu
@end example
+@node Using Automake
+@section Using Automake
+@cindex automake
+@cindex autoconf
+
+It is much easier if you use GNU Automake instead writing your own
+Makefiles. If you do that you don't have to worry about finding and
+invoking the @command{gpgme-config} script at all. @acronym{GPGME}
+provides an extension to Automake that does all the work for you.
+
+@c A simple macro for optional variables.
+@macro ovar{varname}
+@r{[}@var{\varname\}@r{]}
+@end macro
+@defmac AM_PATH_GPGME (@ovar{minimum-version}, @ovar{action-if-found}, @ovar{action-if-not-found})
+Check whether @acronym{GPGME} (at least version @var{minimum-version},
+if given) exists on the host system. If it is found, execute
+@var{action-if-found}, otherwise do @var{action-if-not-found}, if
+given.
+
+Additionally, the function defines @code{GPGME_CFLAGS} to the flags
+needed for compilation of the program to find the @file{gpgme.h}
+header file, and @code{GPGME_LIBS} to the linker flags needed to link
+the program to the @acronym{GPGME} library.
+@end defmac
+
+You can use the defined Autoconf variables like this in your
+@file{Makefile.am}:
+
+@example
+AM_CPPFLAGS = $(GPGME_CFLAGS)
+LDADD = $(GPGME_LIBS)
+@end example
+
+
@node Library Version Check
@section Library Version Check
@cindex version check, of the library