Our Linux release machine 'magrathea' has a very old Linux to help build
portable binaries. It is so old that <elf.h> does not define the
DT_RUNPATH constant. Define the correct value in the build flags to
activate handling of ELF RUNPATH entries in the binary release.
Ancient versions of CMake required else(), endif(), and similar block
termination commands to have arguments matching the command starting the
block. This is no longer the preferred style.
Run the following shell code:
for c in else endif endforeach endfunction endmacro endwhile; do
echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
egrep -z -v 'Tests/CMakeTests/While-Endwhile-' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
Then, use ctest_sleep to separate uploads by at least one
second each, so that the files on the web server all get
distinct time stamps.
Then, when viewed on the web server, sorted by time, they
are also sorted alphabetically.
Only temporarily until we can setup a new cygwin build machine
for making releases. It's specific to the script that runs on
dash2win64 anyhow. When we add a new script to run it on a
different machine, and stop building the cygwin releases on
dash2win64, this change will naturally no longer apply.
We had complaints that people couldn't install the CMake source
tarball on some secure systems because there were "corrupt bz2
files" in it... We do not use these sample*.bz2 files anyhow
in the CMake build, so we'll just remove them.
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.
The WindowsCache.cmake file hard-codes results for MS and similar
Windows toolchains. They are not valid for MinGW tools and also
interfere with cmlibarchive checks. Allow the checks to run.
35c48e1 Check*.cmake: Expand imported targets in CMAKE_REQUIRED_LIBRARIES
61cb4ea bootstrap: move while() and endwhile() into the bootstrap build
c9f2886 -don't pull in CheckTypeSize.cmake from the cmake which is being built
628f365 -remove trailing whitespace
We can be sure that at least cmake 2.6.3 is used when building cmcurl.
This means we always get in the first branch of the if().
I think it is not a good idea to pull a cmake module from the cmake
which is being built in, since this may use features which are not
supported in the cmake which is used to build cmake (e.g. CMAKE_CURRENT_LIST_DIR
which does not exist in cmake 2.6.3 which is the minimum for cmcurl).
A bit further below there is anyway code to handle the case that cmake is
older than 2.8.0, so it should be ok.
Alex
The CMake TarTest fails with the error
mbsnrtowcs.c:116: __mbsnrtowcs: Assertion
`status == GCONV_OK || status != GCONV_EMPTY_INPUT ||
status == GCONV_ILLEGAL_INPUT || status == GCONV_INCOMPLETE_INPUT ||
status == GCONV_FULL_OUTPUT' failed.
on very old glibc versions. Work around the problem by pretending that
mbsnrtowcs does not exist. Libarchive will fall back to mbrtowc.
Use the approach originally used in commit f91b3c1d (Add options to
build with system utility libraries, 2006-10-19) for all other
third-party libraries. Create a "cm_bzlib.h" header wrapper that
robustly includes the header from the bzip2 library chosen for the CMake
build (either builtin or system version). Include the header wrapper
anywhere we need the API provided by <bzlib.h>.
6c611c6 libarchive: Restore CMake 2.6.3 as minimum version
2f5b677 libarchive: Update README-CMake.txt for new snapshot
156cb3b Merge branch 'libarchive-upstream' into update-libarchive
fd42bf1 libarchive: Set .gitattributes to allow trailing whitespace
4f4fe6e libarchive 3.0.2-r4051 (reduced)
65b6e19 libarchive: Avoid bogus conversion warning from PGI compiler
9ccaeb1 libarchive: Suppress PathScale compiler warnings
2309438 libarchive: Rename isoent_rr_move_dir parameter isoent => curent
b6ca96e libarchive: Include linux/types.h before linux/fiemap.h
f293b73 libarchive: Define _XOPEN_SOURCE=500 on HP-UX
6781a09 libarchive: Cleanup after ZLIB_WINAPI check
f15d757 libarchive: Remove hard-coded build configuration
3a9f449 libarchive: Use Apple copyfile.h API only if available
6af6b96 libarchive: Do not use MNT_NOATIME if not defined
02d5e40 libarchive: Check for 'struct statvfs' member 'f_iosize'
8b7ee30 libarchive: Do not use ST_NOATIME if not defined
...
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.
We cannot suppress PGI compiler warnings completely because even with
the "-w" flag the compiler still writes a message containing "compilation
completed with warnings" to stderr.
A warning is triggered by expressions like
test ? NULL : ptr_to_const_char
test ? ".." : ptr_to_const_char
that the PGI compiler handles incorrectly. It chooses the pointer type
of the first option (either void* or char*) and warns about conversion
of the second without a cast. Flip the expression logic to
!test ? ptr_to_const_char : NULL
!test ? ptr_to_const_char : ".."
to help the compiler choose the proper result type.
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.
The parent commit only added DART_TESTING_TIMEOUT to the cache.
Also add CTEST_TEST_TIMEOUT because the logic in
CMake/Tests/CMakeLists.txt uses that variable in its "long test
timeout" computation. Now the cygwin build really does have 7200
seconds before it calls timeout death on a test.
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.
At least one compiler (Borland) defines mode_t as just "short" which is
signed. This breaks code like
switch(archive_entry_filetype(e)) {
case AE_IFREG:
...
}
if AE_IFREG and other constants have a longer signed type (int) because
sign extension of the mode_t return type from archive_entry_filetype
changes its value. Avoid the problem by ensuring the type of the
constants matches mode_t.
This change was originally made in commit a73acfbe (Fix for mode_t with
signed types, 2009-11-07). Port it to the new libarchive snapshot.
Mangle the open_FILE symbols to avoid conflict with open_file:
Warning: public '_archive_read_open_file'
in module 'archive_read_open_filename.c' clashes with
prior module 'archive_read_open_file.c'
Warning: public '_archive_write_open_file'
in module 'archive_write_open_filename.c' clashes with
prior module 'archive_write_open_file.c'
This workaround should not go upstream because it will break when
mixing compilers.
Restore Windows 64-bit lseek removed by upstream svn revision 3826
(Cast away __la_lseek(), use _lseeki64() instead, 2011-11-21). We
need it on Borland.
Make changes equivalent to those originally made by commits
bd56626a (Fixes for the OSF operating system build, 2010-09-08)
92c082b1 (Add a fix for the inline keyword on the osf os, 2010-09-10)
but based on the updated libarchive snapshot.
Remove add_subdirectory() calls for directories not included in the
reduced libarchive snapshot. Remove options that configure settings in
the missing directories.
Previously, the ExternalProject test was timing out at the
default timeout value of 1500 seconds. Give it time, little
one, it will finish if you learn patience.
5be0e92 Merge branch 'upstream-kwiml' into import-KWIML
a8f6159 KWIML: Create test output dir for Xcode
33fff24 KWIML: No INT_SCN*8 on Intel for Windows
bcc06d4 KWIML: No INT_SCN*8 on SunPro compiler
6d12ab3 KWIML: Suppress printf/scanf format warnings in test
553acec KWIML: Avoid redefining _CRT_SECURE_NO_DEPRECATE in test.h
93cebca Configure KWIML inside CMake as cmIML
b2975ad Merge branch 'upstream-kwiml' into import-KWIML
831bade KWIML: The Kitware Information Macro Library
This version of MinGW defines _SSIZE_T_ for ssize_t. This patch is
based on upstream libarchive SVN commit 3649 (Fix build with mingwrt
3.20, 2011-08-27).
Inspired-by: Tim Kientzle <kientzle@freebsd.org>
Re-arrange the logic to look for KWStyle in the typical install
locations and under the Dashboards/Support directory for the
typical CMake dashboard machine. If it's there, turn on CMAKE_USE_KWSTYLE
by default, thereby activating the KWStyle related custom targets
and the KWStyle test.
The older install_files command uses a leading slash in front
of the destination directory, whereas the modern signature does
not. Use the modern signature since that's what the CMake devs
are now used to.
Set GIT_COMMAND to "git" -- each machine involved in building
the CMake release binaries has the right "git" in the PATH.
Separate the release scripts into two batches so we can build
multiple releases on the same machine, in serial, if necessary.
We currnetly do this with the Windows and Cygwin release
binaries on dash2win64.
Sort the files to be uploaded, so that sorting them by modification
time (file copy / upload time) is equivalent to sorting them
alphabetically.
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.
If neither MAJOR_IN_MKDEV or MAJOR_IN_SYSMACROS is defined then provide
our own implementation of these macros locally. This complements the
change in commit cf5ad183 (Fix major() check for LSB 4.0, 2011-01-12).
This patch is based on upstream libarchive SVN commit 1553 (Shuffle the
major/minor/makedev support a bit; this should work on both Windows and
Haiku, 2009-10-31).
Inspired-by: Tim Kientzle <kientzle@freebsd.org>
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>
7e0b001 Fix missed _POLL_EMUL_H_ and HAVE_POLL combo
8a61950 Toss out strerror_r macros
44fca8b Check for poll when looking for _POLL_EMUL_H_
8d36890 Use _POLL_EMUL_H_ instead of HAVE_POLL_FINE
c5cbb31 Ignore strerror_r since CMake isn't threaded
With the switch to upstream ncurses "ABI 6", Cygwin's ncurses has YA ABI
bump and is now libncurses10. However, the regex used to determine in
Utilities/Release/Cygwin/CMakeLists.txt which libncurses is being used
does not handle multiple-digit ABIs.
libncurses8 was the first version to be built with libtool and therefore
contains a hyphen (cygncurses-8.dll). It was first introduced in 2004,
so it should be sufficiently old to rely on. Furthermore, libncurses7
has a serious flaw in that it completely breaks if rebased.
Therefore the easiest solution is to only look at the hyphened versions
and change the regex accordingly.
In commit bb1df1ec, we temporarily ran an alternate test,
guaranteed to fail when the --help output of xmllint did
not contain --nonet and --path.
This commit simply eliminates the test altogether in
this condition rather than make an attempt (doomed to
fail) to pull down the dtd over the internet.
On date=2010-11-04, the CMake dashboard results showed that
the test failed on the following CMake dashboard machines:
dash8.kitware
dash8.kitwarein.com
dashsun1
dashsun1.kitware
ferrari
This is a very small subset of the dashboard machines, and
we have enough proof from enough other machines that the test
passes with xmllint versions new enough to have the --nonet
support.
Therefore, eliminate the CMake.HTML test on machines with old
versions of xmllint. To run the test, make sure you run it
on a machine with a new enough xmllint.
Also, emit "xmllint" and "xmllint --version" output before
failing so that we can inspect the output from all the
dashboard machines in CDash test results.
4a67481 Update release scripts.
7d148d8 Fix the name of the variable being tested.
297be5b add next as an orgin based branch, and not a tag.
187976b Fix release scripts to be able to build releases from tags.
Dereferencing a 0-pointer is undefined behavior, not a deterministic
crash. Use a 1-pointer instead. This also avoids a warning by Clang
about the undefined behavior.
At least one version of GNU tar (1.15.1 with Fedora patches) does not
recognize these attributes and exits with error. Do not generate them.
Patch from upstream libarchive svn r2563.
Change types of local variables, or casting, or re-arrange
expressions to get rid of "conversion may alter value" warnings
as seen on recent dashboard submissions from londinium.kitware.
If defined and non-empty, the value of CMAKE_TESTS_CDASH_SERVER should point
to a CDash server willing to accept submissions for a project named
PublicDashboard. On machines that also run a CDash dashboard, set this
variable to "http://localhost/CDash-trunk-Testing" so that the CMake tests
that submit dashboards do not have to send those submissions over the wire.
The CTestSubmitLargeOutput test runs a dashboard that has a test that produces
very large amount of output on stdout/stderr. Since we do not even want to
attempt to send such large output over the wire, this test is off by default
unless the CMAKE_TESTS_CDASH_SERVER server is localhost. This test is expected
to cause a submission failure when sent to CDash. It passes if the submit
results contain error output. It fails if the submit succeeds.
CMAKE_TESTS_CDASH_SERVER: CDash server used by CMake/Tests.
If not defined or "", this variable defaults to the server at
http://www.cdash.org/CDash.
If set explicitly to "NOTFOUND", curl tests and ctest tests that use the
network are skipped.
If set to something starting with "http://localhost/", the CDash is expected
to be an instance of CDash used for CDash testing, pointing to a
cdash4simpletest database. In these cases, the CDash dashboards should be
run first.
Organize Utilities/CMakeLists.txt to avoid duplicate install command
calls. We collect each type of documentation in a variable listing its
files for installation and then use one install call at the end.
Our new CHECK_TYPE_SIZE macro produces a SIZEOF_<type>_CODE value for
use in configured headers to get architecture-aware type size results.
In this commit we teach cmcurl to use the SIZEOF_<type>_CODE value to
get proper configured type sizes in OS X Universal Binaries.
The commit "Clean up CMake build tree 'bin' directory" changed the
setting of EXECUTABLE_OUTPUT_PATH that affects the cmcurl directory to
empty. We now fix the 'curl' test to refer to the LIBCURL executable
locally. When CMAKE_BUILD_CURL_SHARED is enabled we now put cmcurl.dll
next to the cmake executable.
These changes remove use of EXECUTABLE_OUTPUT_PATH from cmcurl.
The commit "Cleanup regular expressions" removed real include filter
expressions and replaced them with lines like
INCLUDE_REGULAR_EXPRESSION("^.*$")
that do no filtering. We simplify the change by removing the lines
altogether.
The curl library code assumes that HAVE_WINDOWS_H and similar macros are
not defined on Cygwin. Its CMake code achieved this by not even testing
for the corresponding headers on UNIX platforms. However, libarchive
does test HAVE_WINDOWS_H and confuses our curl build. We avoid the
conflict by hard-coding the macros to 0 for UNIX builds inside the curl
tree.
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/archive_platform.h we should include <stdint.h> or
<inttypes.h> immediately after "config.h" to define integer types
referenced by configuration results. For example, on a non-conformant
platform ssize_t might default to int64_t, so int64_t must be defined
before ssize_t is used (and ssize_t is used in archive_windows.h).
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 "libarchive: Define _XOPEN_SOURCE for get(pwu|grg)id_r"
introduced a comment referring to get(pwu|grg)id_r in a source file that
actually uses the functions get(pw|gr)name_r. We fix the comment.
The "result" argument to functions get(pwu|grg)id_r and get(pw|gr)name_r
does not appear in the signatures provided on older platforms. We set
the pointer to the result memory in case the function ignores it, thus
ensuring initialization.
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.
The commit "Fixed a few of the SunOS build errors in libarchive" changed
the call to these functions to use the old signatures. Instead we now
define _XOPEN_SOURCE to get the improved modern signatures.
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.
The commit "libarchive: Fix Borland integer constants" introduced use of
HAVE_* configured macros into archive.h and archive_entry.h where they
are not allowed. This commit replaces the logic with something that
does not depend on the configured macros.
The VS 6 version of wincrypt.h only works if _WIN32_WINNT >= 0x0400.
We block its inclusion through windows.h by defining NOCRYPT, and then
define _WIN32_WINNT and include it only when necessary.
Some versions of Borland provide <stdint.h>, so we use it when possible.
However, the 64-bit signed and unsigned integer min/max constants cause
overflow warnings from Borland itself! For these constants we fall back
on our default definitions.
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.
This converts the CMake license to a pure 3-clause OSI-approved BSD
License. We drop the previous license clause requiring modified
versions to be plainly marked. We also update the CMake copyright to
cover the full development time range.
Some of our third-party utilities have licenses that require their
copyright and license notices to be distributed with binary forms. This
commit adds installation rules to include these notices with installed
CMake documentation.
We've chosen to drop our default dependence on xmlrpc. Thus we disable
the corresponding CTest submission method and remove the sources for
building xmlrpc locally. Users can re-enable the method by setting the
CTEST_USE_XMLRPC option to use a system-installed xmlrpc library.
This version of curl was added experimentally but does not address the
problem we were hoping it fixed (an occasional upload hang). Importing
a new curl can wait until the problem is fully diagnosed and addressed.
We use a custom command to run 'cmake-gui --help...' to generate the
documentation for the application. Since this is a Qt application, the
executable must find the Qt DLLs in order to run. As a convenience, if
QtCore4.dll appears next to qmake.exe, we put its location in the PATH
environment variable when running the custom command on Windows.
Older GCC on the Mac warns for use of long double, so we use
-Wno-long-double. Newer GCC on the Mac does not have this flag and
gives an error. We now check for the flag before using it.
See bug #7357.
Utilities/cmcurl/CMake provides macros with the same file names and
macro names as others in Modules, but with different interfaces. We
rename the curl ones to avoid conflict.
-generate and install the policy documentation files
-generate and install the docbook files for cmake, ctest, cpack, ccmake (cmake-gui not yet ?)
Alex