If you look at the repository itself, i.e. at one of the mirrors (http://mirror.switch.ch/ftp/mirror/cygwin/x86/release/make/), you find four relevant files:
make-3.81-2-src.tar.bz2 09-Feb-2008 20:50 1.1M
make-3.81-2.tar.bz2 09-Feb-2008 20:50 350K
make-3.82.90-1-src.tar.bz2 02-Dec-2011 18:05 1.3M
make-3.82.90-1.tar.bz2 02-Dec-2011 18:05 442K
There are two version, 3.82.90-1 and an older one 3.81-2 which are approx the same size (order of magnitude). The corresponding bigger packages (1MB) are the sources.
This is exactly what the cygwin setup tool offers me.
Here, the offered files are (http://mirror.switch.ch/ftp/mirror/cygwin/x86_64/release/make/):
make-3.82-3-src.tar.bz2 14-Mar-2013 11:26 1.6M
make-3.82-3.tar.bz2 14-Mar-2013 11:26 473K
make-3.82.90-1-src.tar.bz2 30-Mar-2013 12:12 1.9M
make-3.82.90-1.tar.bz2 30-Mar-2013 12:12 1.2M
This fits to your described scenario.
Generally to investigate the differences between these two versions, check out the
Changelog in the newest source tarball.
To elaborate a little more:
Usually (Debian uses a similar scheme), the version number before the hyphen is the version number of the original package, as released by the author of the software (i.e. the GNU make team). The number after the hypen gives some kind of patchlevel, applied by the package maintainer (i.e. the cygwin team).
To prove look at
make.cygport in the source packages (e.g.
The applied patches (by cygwin) are filed in
So, it was decided to include a cygwin port of
make 3.82 and
make 3.82.90 in the 64bit cygwin distribution. (Why the GNU make team decided that version 3.82.90 should follow 3.82 I really don't know...)
What is the difference between those (upstream) versions?
NEWS in the original source tarball inside the cygwin source tarball tells us:
A complete list of bugs fixed in this version is available here:
WARNING: Backward-incompatibility! This version of make adheres to the POSIX backslash/newline handling,
introducing the following differences:
- Each backslash/newline in a variable value is replaced with a space;
multiple consecutive backslash/newlines do not condense into one space.
- In recipes, a recipe prefix following a backslash-newlines is removed.
New feature: The "job server" capability is now supported on Windows.
Implementation contributed by Troy Runkel
New feature: "!=" shell assignment operator as an alternative to the $(shell ...) function. Implemented for compatibility with BSD
Variables ending in "!" previously defined as "variable!= value" will
interpreted as shell assignment. Change your assignment to add
between the "!" and "=": "variable! = value"
New command line option: --trace enables tracing of targets. When enabled
the recipe to be invoked is printed even if it would otherwise be
by .SILENT or a "@" prefix character. Also before each recipe is run
makefile name and linenumber where it was defined are shown as well as
prerequisites that caused the target to be considered out of date.
On failure, the makefile name and linenumber of the recipe that failed are
A .RECIPEPREFIX setting is remembered per-recipe and variables expanded
in that recipe also use that recipe prefix setting.
In -p output, .RECIPEPREFIX settings are shown and all target-specific
variables are output as if in a makefile, instead of as comments.
So, probably this backward incompatibility is the reason why both versions are provided by cygwin.