Apple distributes their own Clang build with their own version numbers
that differ from upstream Clang. Use the __apple_build_version__ symbol
to identify the Apple Clang compiler and report the Apple Build Version
as the fourth version component in CMAKE_<LANG>_COMPILER_VERSION. Add
Compiler/AppleClang-<lang> and Platform/Darwin-AppleClang-<lang> modules
that simply include the upstream equivalents.
Fix comparisons of CMAKE_<LANG>_COMPILER_ID to Clang in CMake's own
source and tests to account for AppleClang.
Ensure CMAKE_DATA_DIR, CMAKE_DOC_DIR, and CMAKE_MAN_DIR are always
relative paths in CMake code, and set defaults accordingly. Use the
install() command instead of install_files() and install_targets().
This is more modern and also avoids stripping of the first character
from user-specified destinations.
While at it, fix the default destinations reported in the bootstrap
help.
Avoid requiring CMake 2.8.6 for CMakePushCheckState or CMake 2.8.8 for
CMakeExpandImportedTargets. Drop the custom versions of CMake modules
CheckCSource(Compiles|Runs) because we do not use the SAFESEH option
anyway.
Update the requirement specified in the top-level CMakeLists.txt file.
Drop the special-case minimum required version of 2.8.0 because the new
minimum subsumes it.
Revert commit 6c611c6b (libarchive: Restore CMake 2.6.3 as minimum
version, 2012-01-05) since our requirement now subsumes libarchive's.
Upstream libarchive now requires CMake 2.8 to get the newer add_test
functionality. Since we do not build libarchive's tests we do not
need the requirement.
The HP-UX <wchar.h> header provides 'mbstate_t' in C89/C90 mode only if
_XOPEN_SOURCE is defined to exactly 500. Type 'mbstate_t' was
introduced in C89/C90 Normative Amendment 1, aka C94/C95, adding support
international character sets. It is part of C99 but not C89/C90.
Configure the result as definition HAVE_STRUCT_STATVFS_F_IOSIZE and use
the member only if it exists. At least one platform (IRIX) provides
struct statvfs without this member.
VS 6 warns verbosely when WINVER >= 0x0500. Avoid defining WINVER and
_WIN32_WINNT to higher than 0x0400 on VS 6. Provide missing API
declarations in archive_windows.h when we do not get them from
<windows.h>. Provide GetVolumePathNameW because VS 6 does not declare
it regardless of the API version.
Remove add_subdirectory() calls for directories not included in the
reduced libarchive snapshot. Remove options that configure settings in
the missing directories.
OpenSSL is not part of the Linux Standard Base but its headers and
libraries may still be found at build time even though they may not be
available at runtime. Use it only if explicitly allowed.
The LSB header files define major() as a macro but if it is ever called
the macro references symbols not available at link time. Improve the
test for major() to actually call the macro and try to link. This
approach is based on upstream libarchive SVN commit 2866 which fixed
libarchive issue 125, submitted in response to CMake issue #11648.
Inspired-by: Tim Kientzle <kientzle@freebsd.org>
We use CHECK_TYPE_SIZE in libarchive to check for the existence of some
types. For universal binary builds on the Mac, the size check can fail
if it is inconsistent across architectures. However, we do not actually
need the size so it is safe to do the checks for only one architecture.
See issue #9913.
In libarchive we configure an internal header file called 'config.h'.
This commits moves the include directory containing the file to the
beginning of the include path to avoid conflicts from system headers.
The commit "Fix libarchive linker errors on SunOS for mkdev/major/minor"
hard-coded #include lines for getting mkdev/major/minor on the Sun.
Instead we add missing try-compile tests to make sure the proper headers
get included through the standard mechanism.
Most of the integer type defaults needed for MSVC and Borland actually
work with all Windows compilers. This commit generalizes the defaults
to avoid compiler-specific tests.
This allows for a built in bzip and zip capability, so external tools
will not be needed for these packagers. The cmake -E tar xf should be
able to handle all compression types now as well.