CPackRPM: avoid leakage of RPM directive from one component to another.

Fixes #0013248
Inspired-By: Sergei Golubchik
FindPythonLibs: honor EXACT version specification (#13216)
FindBZip2: Search locations in GnuWin32 registry

The GnuWin32 "bzip2" installer stores in the registry key

 HKEY_LOCAL_MACHINE\SOFTWARE\GnuWin32\Bzip2

an "InstallPath" value.  Use this entry as a search location.
KWSys: Fix hashtable prime list on g++ 2.9 (#13273)

Building CMake with g++ 2.9-aix51-020209 on an AIX 5.3 system gives:

 cmsys/hashtable.hxx: In function `const long unsigned int *cmsys::get_stl_prime_list ()':
 cmsys/hashtable.hxx:399: warning: sorry: semantics of inline function static data
  `const long unsigned int _stl_prime_list[31]' are wrong (you'll wind up with multiple copies)
 cmsys/hashtable.hxx:399: warning: you can work around this by removing the initializer

Give get_stl_prime_list internal linkage.
cmArchiveWrite: Clear fflags from archive entries

When reading archive entries from disk strip any "fflags" entry headers
that may have been loaded from the filesystem when libarchive is built
with HAVE_STRUCT_STAT_ST_FLAGS (struct stat has 'st_flags').  The local
filesystem flags are not useful for distribution.  Furthermore, GNU tar
does not understand the "SCHILY.fflags" extended header used to store
the flags in the archive.  Use the approach from commit e8558efa
(cmArchiveWrite: Clear xattr and acl from entries, 2011-04-07) to remove
the flags and avoid producing the non-portable extended header.
Makefile: Support directory names containing '=' (#12934)

Since commit c8ef6430 (Allow directory names containing '=' and warn if
necessary, 2012-02-06) we allow directories with '=' instead of
rejecting them as was previously done since commit 8704525f (Reject
directory names containing '=', 2011-01-14).  However, we did not warn
in all cases that '=' may cause failure, such as when it appears on the
right-hand side of a dependency line.

Both commits above were made assuming that '=' cannot be escaped in Make
syntax, but it can be achieved with a variable:

  EQUALS = =
  left$(EQUALS)side : right$(EQUALS)side

Use this approach to escape '=' in dependency lines, thus supporting
the character in paths.

All our tests now pass when CMake is built in source and build trees
both containing '=', except for the "OutOfSource" test.  It fails in
its coverage of the obscure "OutOfBinary" test case where part of the
build tree is located outside the main build tree of the test.  The
reason is that CMake must invoke a command like

  $(MAKE) -f /path/with=sign/build.make /path/with=sign/somefile

but the make tool interprets the last argument as a variable assignment.
This is an acceptable limitation, since the case is so obscure, in
exchange for supporting '=' cleanly otherwise.
VS: Set Intel Fortran 13 project version

I have tested that it works with:

 Microsoft Visual Studio 10.0.40219.1
 Intel Visual Fortran 13.0.0.041 Beta Build 20120425
libarchive: Avoid 'inline' on SunPro < 5.9 (#13277)

Suggested-by: Daniel R. Gomez <gomez@teragram.com>
KWIML: Add interface to report broken integer format macros

The <inttypes.h> header on some platforms define the integer format
macros incorrectly for some of the integer types.  Document macros that
we can define to report such platforms to the includer.  Check these
reports before trusting the system-defined macros.
KWIML: Report broken integer format macros on AIX 4.3

The <inttypes.h> on this platform defines the macros incorrectly, as in

 #define PRId32 %d

instead of

 #define PRId32 "d"
Merge branch 'upstream-kwiml' into update-KWIML
UseJava: fix find_jar() called with multiple files (#13281)
add_library: Allow OBJECT library without dynamic linking (#13289)

When global property TARGET_SUPPORTS_SHARED_LIBS is FALSE we should
still allow OBJECT libraries.  This was an oversight in commit b87d7a60
(Add OBJECT_LIBRARY target type, 2012-03-12).  While at it, fix the
warning message to report context.
Add platform variables for position independent code flags

Store in new platform variables

  CMAKE_${lang}_COMPILE_OPTIONS_PIC
  CMAKE_${lang}_COMPILE_OPTIONS_PIE

flags for position independent code generation.

In almost all cases, this means duplication of the
CMAKE_SHARED_LIBRARY_${lang}_FLAGS for the _PIC case and using the
assumed pie equivalent for the _PIE case.  Note that the GNU compiler
has supported -fPIE since 3.4 and that there is no -fPIC on GNU for
Windows or Cygwin.

There is a possibility that the _PIE variables are not correct.
However, as there is no backwards compatibility to be concerned about
(as the POSITION_INDEPENDENT_CODE property is not used anywhere yet),
the current state suffices.
Add platform variable for flags specific to shared libraries

Store in CMAKE_${lang}_COMPILE_OPTIONS_DLL flags from
CMAKE_SHARED_LIBRARY_${lang}_FLAGS that are truly exclusive to shared
libraries.
Refactor generation of shared library flags

CMAKE_SHARED_LIBRARY_<lang>_FLAGS has flags on various platforms for a
variety of purposes that are correlated with shared libraries but not
exclusive to them.  Refactor generation of these flags to use new
purpose-specific platform variables

  CMAKE_<lang>_COMPILE_OPTIONS_DLL
  CMAKE_<lang>_COMPILE_OPTIONS_PIC
  CMAKE_<lang>_COMPILE_OPTIONS_PIE

Activate the DLL flags specifically for shared libraries.  Add a new
POSITION_INDEPENDENT_CODE target property to activate PIC/PIE flags, and
default to true for shared libraries to preserve default behavior.
Initialize the new property from CMAKE_POSITION_INDEPENDENT_CODE to
allow easy global configuration in projects.

Although the default behavior is unchanged by this refactoring, the new
approach ignores CMAKE_SHARED_LIBRARY_<lang>_FLAGS completely.  We must
leave it set in case projects reference the value.  Furthermore, if a
project modifies CMAKE_SHARED_LIBRARY_<lang>_FLAGS it expects the new
value to be used.  Add policy CMP0018 to handle compatibility with
projects that modify this platform variable.

Add a PositionIndependentCode test on platforms where we can get
meaningful results.
Avoid direct use of std::(o|)stringstream (#13272)

Older C++ compilers do not provide a standard std::stringstream.
Use our compatibility interfaces instead.

Also avoid std::stringstream(openmode) signature.  Our approximate
stringstream implementation provided when the standard one is not
available does not support the openmode argument.
Merge topic 'CPackRPM-emptyPerComponentREQUIRES'

7321c94 CPackRPM: avoid leakage of RPM directive from one component to another.
Merge topic 'FindPythonLibs-13216'

9d145b0 FindPythonLibs: honor EXACT version specification (#13216)
Merge topic 'FindBZip2-GnuWin32-registry'

7c912af FindBZip2: Search locations in GnuWin32 registry