summaryrefslogtreecommitdiffstats
path: root/README
blob: 9bcf7b35619be4e7e19e27c3494164afc82de00a (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
112
113
114
115
116
117
This directory contains the source code for the Setup program
for the Cygwin net releases.

HOW TO BUILD:
-------------

Cygwin
------

Setup should build out-of-the-box on any Cygwin environment that has all the
required packages and their dependencies installed:

  - autoconf
  - automake
  - bison
  - flex
  - libtool
  - make
  - mingw64-${arch}-bzip2
  - mingw64-${arch}-gcc-g++
  - mingw64-${arch}-headers
  - mingw64-${arch}-libgcrypt
  - mingw64-${arch}-libsolv
  - mingw64-${arch}-xz
  - mingw64-${arch}-zlib
  - mingw64-${arch}-zstd
  - upx (optional)

The ${arch} needs to be replaced with either "i686" or "x86_64"
depending on the target architecture to build for.

Fedora
------

Setup should also build out-of-the-box in a Fedora environment that has all the
required packages and their dependencies installed:

  - automake
  - bison
  - flex
  - libtool
  - make
  - mingw${arch}-bzip2-static
  - mingw${arch}-gcc-c++
  - mingw${arch}-libgcrypt-static
  - mingw${arch}-libgnurx-static
  - mingw${arch}-libsolv-static (*)
  - mingw${arch}-libzstd-static (**)
  - mingw${arch}-winpthreads-static
  - mingw${arch}-xz-libs-static
  - mingw${arch}-zlib-static
  - upx (optional)

The ${arch} needs to be replaced with either "32" or "64"
depending on the target architecture to build for.

(*) Requires 'dnf copr enable jturney/mingw-libsolv'
(**) Requires 'dnf copr enable jturney/mingw-zstd'

Build commands:

0) Obtain this project's source code:
   $ git clone git://sourceware.org/git/cygwin-apps/setup.git
   $ cd setup

1) Configure using this option
   $ /path/to/setup/bootstrap.sh
   This will automatically rebuild configure files and run configure
   in the current directory.  If you have installed toolchains for
   both i686 and x86_64 architectures, then you need to select for
   which architecture you want to build:
   $ /path/to/setup/bootstrap.sh --host=i686-w64-mingw32
   $ /path/to/setup/bootstrap.sh --host=x86_64-w64-mingw32

2) $ make

3) Wondering why your binary is so much bigger than the official releases?
   This removes debugging symbols:
   $ make strip
   This additionally compresses it using UPX
   (requires package upx to be installed):
   $ make upx

CODING GUIDELINES:
------------------
setup has a number of different code formats in it. This is ok as long
as it stays readable. When submitting a patch, make sure that you use
the coding-style of the surrounding code.

For new code, use the GNU standards as much as possible.  We understand
that this is not a precise fit for C++ code but you can use Cygwin itself
as a guide.


SUBMITTING A PATCH:
-------------------
Follow the general directions given in the Cygwin contributions document:

   https://cygwin.com/contrib.html

The appropriate mailing list for this project is cygwin-apps
(rather than cygwin-patches). Thus an appropriate configuration is:

   $ git config --local format.subjectprefix "PATCH setup"
   $ git config --local sendemail.to "cygwin-apps@cygwin.com"

Before sending patches with:

   $ git format-patch [--cover-letter]
   $ git send-email *.patch


TRANSLATIONS
------------

Translations of the gettext template res.pot can be made using PO file tools, or
online at https://hosted.weblate.org/projects/cygwin-setup/cygwin-setup/