# Contributing to Libidn This file contains instructions for developers and advanced users that wants to build from version controlled sources. We rely on several tools to build the software, including: - Make - C compiler - Automake - Autoconf - Libtool - Gettext - Texinfo - Gperf - help2man - Gengetopt - Tar - Gzip - Texlive & epsf (for PDF manual) - GTK-DOC (for API manual) - Git - Perl - Valgrind (optional) - OpenJDK (for java port) - Mono mcs (for C# port) - fig2dev The software is typically distributed with your operating system, and the instructions for installing them differ. Here are some hints: APT/DPKG-based distributions: ``` apt-get install make git autoconf automake libtool gettext autopoint cvs apt-get install texinfo texlive texlive-plain-generic texlive-extra-utils apt-get install help2man gtk-doc-tools dblatex valgrind gengetopt apt-get install transfig mono-mcs gperf default-jdk-headless ``` DNF/RPM-based distributions: ``` dnf install -y make git autoconf automake libtool gettext-devel cvs dnf install -y texinfo texinfo-tex texlive dnf install -y help2man gtk-doc gengetopt dblatex valgrind dnf install -y gperf java-latest-openjdk-devel ``` On macOS with Xcode and Homebrew: ``` brew install autoconf automake libtool gengetopt help2man texinfo fig2dev ``` To download the version controlled sources: ``` git clone https://git.savannah.gnu.org/git/libidn.git cd libidn ``` The next step is to import gnulib files, run autoreconf etc: ``` ./bootstrap ``` If you have a local checkout of gnulib and wants to avoid download another copy, you may want to use: ``` ./bootstrap --gnulib-refdir=../gnulib ``` Then configure the project as you would normally, for example: ``` ./configure --enable-java --enable-gtk-doc-pdf ``` Then build the project: ``` make make check ``` 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) APT/DPKG-based distributions: ``` apt-get install mingw-w64 wine binfmt-support lcov zip apt-get install clang doxygen pmccabe ncftp ``` See README-release on how to make a release. Happy hacking! ---------------------------------------------------------------------- Copyright (C) 2009-2024 Simon Josefsson 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.