Fontconfig is built with the traditional configure script:

	$ ./configure --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man

This should generate valid Makefiles, then:

	$ make
	$ make install

If you're going to package fontconfig for release, there are several
important steps:

 1.	Update the version numbers
 		configure.in
		fontconfig/fontconfig.h

 2.	Fix the README
 		Change version number
		Set the date
		Append the short log

		git-log --pretty=short 2.4.xx.. | git-shortlog
		
 3.	Commit those changes
 
 4. 	rebuild the configuration files with autogen.sh
 		sh autogen.sh --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man --localstatedir=/var
		
 5.	make distcheck (NB: won't work without docbook-utils -PL)
 
 6.	tag the tree
 		git-tag -u 096c4dd3 -m 'Version 2.4.x' 2.4.x
		
 7.	make Changelog-2.4.x
 		git-log --stat 2.4.(x-1).. > ChangeLog-2.4.x
		
 8.	Copy ChangeLog-2.4.x and fontconfig-2.4.x.tar.gz to
 
 	freedesktop.org:/srv/fontconfig.freedesktop.org/www/release
	
 9.	Update the Fontconfig Devel wiki page
 	http://fontconfig.org/wiki/Devel
	
10.	Update the fontconfig documentation

		scp -rp doc/fontconfig-user.html doc/fontconfig-devel fontconfig.org:/srv/fontconfig.freedesktop.org/www

11.	Compute md5sums for release files:
		md5sum fontconfig-2.4.x.tar.gz ChangeLog-2.4.x
		
12.	Post a note to fontconfig@fontconfig.org.  Include the md5sums.
	gpg sign the message.

