aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/libidn/CONTRIBUTING.md
blob: b68a5ebe5c1de39aca0e0b3683085201c969dd51 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# 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 <https://www.gnu.org/software/make/>
- C compiler <https://www.gnu.org/software/gcc/>
- Automake <https://www.gnu.org/software/automake/>
- Autoconf <https://www.gnu.org/software/autoconf/>
- Libtool <https://www.gnu.org/software/libtool/>
- Gettext <https://www.gnu.org/software/gettext/>
- Texinfo <https://www.gnu.org/software/texinfo/>
- Gperf <https://www.gnu.org/software/gperf/>
- help2man <https://www.gnu.org/software/help2man/>
- Gengetopt <https://www.gnu.org/software/gengetopt/>
- Tar <https://www.gnu.org/software/tar/>
- Gzip <https://www.gnu.org/software/gzip/>
- Texlive & epsf <https://tug.org/texlive/> (for PDF manual)
- GTK-DOC <https://gitlab.gnome.org/GNOME/gtk-doc> (for API manual)
- Git <https://git-scm.com/>
- Perl <https://www.cpan.org/src/http://www.cpan.org/>
- Valgrind <https://valgrind.org/> (optional)
- OpenJDK (for java port)
- Mono mcs <https://www.mono-project.com/> (for C# port)
- fig2dev <https://sourceforge.net/projects/mcj/>

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.