Libidn HACKING -- Information for contributors. -*- outline -*- Copyright (C) 2009-2016 Simon Josefsson See the end for copying conditions. This file contains instructions for developers and advanced users that wants to build from version controlled sources. We require several tools to build the software, including: - Make - Automake - Autoconf - Libtool - Gettext - Texinfo - Gperf - help2man - Gengetopt - Tar - Gzip - Texlive & epsf (for PDF manual) - CVS (for gettext autopoint) - GTK-DOC (for API manual) - Git - Perl - Valgrind (optional) - Gcj (for java port) - gjdoc (for java port) - Mono mcs (for C# port) - fig2dev The required software is typically distributed with your operating system, and the instructions for installing them differ. Here are some hints: gNewSense/Debian/Ubuntu: apt-get install make git-core autoconf automake libtool gettext cvs apt-get install texinfo texlive texlive-generic-recommended texlive-extra-utils apt-get install help2man gtk-doc-tools valgrind gengetopt apt-get install gcj-jdk gjdoc transfig mono-mcs gperf To download the version controlled sources: $ git clone git://git.savannah.gnu.org/libidn.git $ cd libidn The next step is to run autoreconf, ./configure, etc: $ make bootstrap Then build the project normally: $ make $ make check When building from version controlled sources, some developer specific flags are automatically enabled. For example, the self-checks are run under valgrind if available. To prepare releases you need some additional tools: - Mingw (to produce Windows binaries) - Wine (to self-check Windows binaries) - Lcov (to produce coverage HTML pages) - Zip (to pack Windows binaries) - Clang (to produce clang analysis) - Doxygen (to produce doxygen manual) - pmccabe (to produce cyclomatic code complexity report) - ncftpput (to upload source tarballs) gNewSense/Debian/Ubuntu: apt-get install mingw-w64 wine binfmt-support lcov zip apt-get install clang doxygen pmccabe ncftp To check if the archive is ready for release, do: $ make release-check And to do the uploading of the release, do: $ make release See the file cfg.mk for the rules that implement this. After release, update NEWS, configure.ac and lib/stringprep.h incrementing the version numbers as appropriate. Happy hacking! ---------------------------------------------------------------------- Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.