- May 06, 2014
-
-
These flags are needed to enable support for C++98. Also teach the 'bootstrap' script to add them if necessary.
-
- Feb 19, 2014
-
-
Brad King authored
Historically CMake used three version components for the feature level. We released new features while incrementing only the third version component. Since commit v2.8.2~105^2~4 (New version scheme to support branchy workflow, 2010-04-23) we used the fourth version component for bug-fix releases and the development date: <major>.<minor>.<patch>[.<tweak>][-rc<n>] = Release <major>.<minor>.<patch>.<date>[-<id>] = Development This solidified use of three components for the feature level, and was necessary to continue releasing 2.x versions because: * Some existing projects performed floating-point comparisons of ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} to 2.x numbers so ``x`` could never be higher than 9. * Version 2.9.<date> was used briefly in post-2.8.0 development in CVS prior to the transition to Git, so using it in releases may have caused confusion. Now that we are moving to 3.x versions, these two restrictions go away. Therefore we now change to use only two components for the feature level and use the scheme: <major>.<minor>.<patch>[-rc<n>] = Release <major>.<minor>.<date>[-<id>] = Development
-
- Feb 10, 2014
-
-
Brad King authored
Also teach the bootstrap script to configure the needed headers.
-
- Feb 09, 2014
-
-
Stephen Kelly authored
Define the list of commands in the CMakeLists.txt file. List the sources in the CMakeLib target, but mark them as HEADER_FILE_ONLY. This has the effect that IDEs will show the files, though they will not be built again. Add a cmCommandsForBootstrap.cxx file for bootstrapping purposes. Rename the cmExportLibraryDependencies file to match the common pattern.
-
- Jan 15, 2014
-
-
Follow up commit ca63bb10 (bootstrap: try better workaround for builds on Linux/HPPA, 2013-09-12) with an improved ld flag. Suggested-by: Guy Martin
-
- Nov 25, 2013
-
-
Brad King authored
Run the KWSYS_STL_HAS_WSTRING platform test and configure the result. Configure the Encoding and FStream header files and build the sources. On Windows, build EncodingC.c with KWSYS_ENCODING_DEFAULT_CODEPAGE=CP_ACP.
-
- Nov 12, 2013
-
-
Brad King authored
Use 'grep' to extract the copyright notice from Copyright.txt instead of duplicating it in the bootstrap script.
-
- Oct 25, 2013
-
-
Brad King authored
Since commit c9a5f34b (Cleanup use of CMake version in install destinations, 2013-09-26) we use the full CMake version in default install destinations. For rapidly changing versions of the form <major>.<minor>.<patch>.<date>-g<commit>[-dirty] used by developers this is too granular. Instead use just <major>.<minor>.<patch> as the version for default install destinations. This will still be granular enough for unique directories in releases. On Cygwin continue to use the full ${CMake_VERSION} as was the case prior to the above-mentioned commit.
-
- Oct 19, 2013
-
-
Brad King authored
All calls to this method have been replaced by newer infrastructure. Remove it and the supporting cmWin32ProcessExecution class.
-
- Oct 18, 2013
-
-
Brad King authored
Tell users to pass cache values with the -D option on the command line or use cmake-gui or ccmake.
-
- Oct 16, 2013
-
-
Brad King authored
Add a Utilities/Sphinx directory to hold CMake build code to run the Sphinx (sphinx-doc.org) documentation generation tool. Create a CMakeLists.txt file there capable of building either as a subdirectory of the main CMake build, or as a standalone documentation build. Add cache options SPHINX_MAN and SPHINX_HTML to select output formats and SPHINX_EXECUTABLE to specify the sphinx-build executable. Add bootstrap options --sphix-man and --sphinx-html to select output formats and --sphinx-build=<sb> to specify the sphinx-build executable. Create a "conf.py.in" file to configure_file into "conf.py" to tell sphinx-build how to build our documents. Create a "cmake.py" Sphinx extension module defining: * The "cmake-module" directive used in Help/module/*.rst files to scan .rst markup from the corresponding Modules/*.cmake file. * A Sphinx domain called "cmake" defining documentation object types for CMake Help/<type> directories: command, generator, manual, module, policy, prop_*, and variable. Add a "role" for each type to perform cross-references. Teach the roles to treat "<XYZ>" as placeholders instead of explicit targets if not preceded by a space. Add cmake domain directives to define command and variable objects explicitly in .rst file content. This will allow modules to define their own commands and variables and have them indexed and linkable. * A Sphinx document transform that converts Help/<type>/*.rst documents into cmake domain objects of the corresponding <type> and adds index entries for them. This will automatically index all CMake documentation objects and provide cross-reference targets for them with no special markup in the .rst files.
-
Brad King authored
Drop all DefineProperty calls for non-chained properties. Drop the documentation from the chained ones. The documentation for all properties is now in Help/prop_*/*.rst files.
-
Brad King authored
We now need only the Usage formatter to support command-line options that print basic usage, and the supporting indented=>preformatted markup processor to support CMake message formatting. Drop all other documentation formatters and move the remaining code up into the top cmDocumentationFormatter class.
-
- Oct 15, 2013
-
-
Brad King authored
Factor the CMAKE_DATA_DIR, CMAKE_DOC_DIR, and CMAKE_MAN_DIR selection out of CMakeLists.txt and into a Source/CMakeInstallDestinations.cmake script. Load the script from the original location of the code. Cache the destination values as empty strings so we know if the user sets them explicitly. If not, then compute defaults based on the platform and full CMake version string. By not caching the versioned defaults, we can change them in a single build tree as the version changes. Remove duplication of the install destination defaults from the bootstrap script. Cache empty defaults there too. Parse from the CMake code the default values to report in the help output. Keep the CMake code in a structured format to make this reliable.
-
Brad King authored
-
- Oct 03, 2013
-
-
Brad King authored
Move the cmake::ExecuteCMakeCommand static method and all the static methods it calls out of the 'cmake' class to a separate 'cmcmd' class. Build the latter as part of the main cmake executable with cmakemain.cxx and not in CMakeLib. Drop unused header includes from "cmake.cxx". By moving this implementation out of cmake.cxx we avoid carrying it around in all the executables that use class 'cmake'. It is needed only for the main "cmake -E" functionality.
-
- Sep 12, 2013
-
-
Rolf Eike Beer authored
The workaround currently present works fine without -O or with -O1, but fails with -Os or -O2 and higher. Using -O2 is common e.g. in Gentoo, as resulting in bugs like this: https://bugs.gentoo.org/473276 Prevent the workaround for higher optimization levels to make bootstrapping more likely to succeed. This is still a workaround as ld still keeps crashing in some situations.
-
- Aug 26, 2013
-
-
Brad King authored
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.
-
- Aug 02, 2013
-
-
Brad King authored
Revert commit a1c032b9 (bootstrap: Suppress CMAKE_OSX_SYSROOT if CFLAGS have -isysroot, 2012-09-21). If MACOSX_DEPLOYMENT_TARGET is set then CMAKE_OSX_DEPLOYMENT_TARGET will be set and Darwin.cmake will complain if no CMAKE_OSX_SYSROOT is set. Just allow both -isysroot flags to appear. The one generated by CMAKE_OSX_SYSROOT appears after and overrides the one from CFLAGS/CXXFLAGS.
-
- Jun 14, 2013
-
-
Brad King authored
The single translation unit has grown too large for some compilers. Split it into cmBootstrapCommands1.cxx and cmBootstrapCommands2.cxx.
-
- Jun 03, 2013
-
-
Brad King authored
The parent commit merged a change to KWSys that adds preprocessor definitions for KWSYS_CXX_HAS_UTIMENSAT and KWSYS_CXX_HAS_UTIMES to the command line for compiling SystemTools. For bootstrapping we do not need sub-1s timestamps so just define them to 0 for now.
-
- Feb 22, 2013
-
-
This is to be used during try_compile using LINK_LIBRARIES in the srcfile signature and, in the future, TARGETS in the binary dir signature.
-
- Jan 07, 2013
-
-
Rolf Eike Beer authored
These values are patched into that file by Haiku since 2.8.1.
-
- Dec 19, 2012
-
-
Brad King authored
The KWSys "EncodeExecutable" and "ProcessFwd9x" executables were dropped from KWSys along with Win9x Process support. Drop references from the rest of the CMake build rules.
-
- Nov 05, 2012
-
-
Brad King authored
Update the copyright year reported by 'bootstrap' and in the generated documentation to report 2012.
-
- Oct 31, 2012
-
-
There is a binutils bug that leads to errors like this: /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: libCMakeLib.a(cmTarget.cxx.o)(.text+0x12084): cannot reach 00001d28__ZNSspLEPKc@@GLIBCXX_3.4+0, recompile with -ffunction-sections /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: libCMakeLib.a(cmTarget.cxx.o)(.text+0x12084): cannot handle R_PARISC_PCREL17F for std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char const*)@@GLIBCXX_3.4 /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: final link failed: Bad value Until someone finds out what needs to be fixed in binutils this allows anyone to compile a working CMake even in debug mode.
-
- Sep 28, 2012
-
-
This is a map<string, cmExportSet *> with overloaded operator[] and destructor.
-
Replace direct use of 'std::vector<cmTargetExport const*>' with a dedicated class.
-
Initially this will only be used to check for self-references, but can be extended to check for cycles when chaining properties of other targets.
-
- Sep 21, 2012
-
-
Brad King authored
In order to bootstrap on OS X with Xcode without the command line tools one must add -isysroot to CFLAGS and CXXFLAGS. In this case the flags will make it into the configured CMake. Set CMAKE_OSX_SYSROOT to empty in the initial cache to prevent CMake from adding -isysroot again.
-
- Sep 18, 2012
-
-
The expressions may be parsed and then cached and evaluated multiple times. They are evaluated lazily so that literals such as ',' can be treated as universal parameter separators, and can be processed from results without appearing literally, and without interfering with the parsing/evaluation of the entire expression.
-
- Aug 24, 2012
-
-
Brad King authored
At the top of a build tree we configure inside the CMakeFiles directory files such as "CMakeSystem.cmake" and "CMake<lang>Compiler.cmake" to save information detected about the system and compilers in use. The method of detection and the exact results store varies across CMake versions as things improve. This leads to problems when loading files configured by a different version of CMake. Previously we ignored such existing files only if the major.minor part of the CMake version component changed, and depended on the CMakeCache.txt to tell us the last version of CMake that wrote the files. This led to problems if the user deletes the CMakeCache.txt or we add required information to the files in a patch-level release of CMake (still a "feature point" release by modern CMake versioning convention). Ensure that we always have version-consistent platform information files by storing them in a subdirectory named with the CMake version. Every version of CMake will do its own system and compiler identification checks even when a build tree has already been configured by another version of CMake. Stored results will not clobber those from other versions of CMake which may be run again on the same tree in the future. Loaded results will match what the system and language modules expect. Rename the undocumented variable CMAKE_PLATFORM_ROOT_BIN to CMAKE_PLATFORM_INFO_DIR to clarify its purpose. The new variable points at the version-specific directory while the old variable did not.
-
- Aug 13, 2012
-
-
Ancient CMake versions required upper-case commands. Later command names became case-insensitive. Now the preferred style is lower-case. Run the following shell code: cmake --help-command-list | grep -v "cmake version" | while read c; do echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | xargs -0 sed -i -f convert.sed && rm convert.sed
-
- Jul 20, 2012
-
-
Peter Kümmel authored
-
- Jul 17, 2012
-
-
Nicolas Despres authored
-
Nicolas Despres authored
-
- May 08, 2012
-
-
Brad King authored
Since commit f39e82c9 (bootstrap: Re-implement command line option processing, 2011-12-16) bootstrap uses POSIX shell expressions of the form "${x#y}" to remove prefix pattern 'y' from the vaule of 'x'. Although this is allowed by POSIX old shells on some platforms do not support it. Revert to using 'sed' to work with old shells.
-
- Apr 27, 2012
-
-
Brad King authored
The SystemTools::PutEnv function tries to provide the "putenv" API without leaking memory. However, the kwsysDeletingCharVector singleton frees memory that may still be referenced by the environment table, having been placed there by putenv. If any static destruction or processing by an external tool happens after the singleton is destroyed and accesses the environment it will read invalid memory. Replace use of putenv with setenv/unsetenv when available. The latter manage internal copies of the values passed instead of referencing the original memory. When setenv/unsetenv are not available use putenv with a singleton that removes its values from the environment before freeing their memory. This requires an "unputenv" implementation. On at least some platforms it must be written in terms of "putenv" because other APIs are not available and direct modification of the "environ" global is not safe (e.g. on Windows there is interaction with "wenviron"). Fortunately either putenv("A=") or putenv("A") will remove "A" from the environment on these platforms. On other platforms fall back to direct manipulation of "environ". Also add UnPutEnv to the API and add a test for the behavior of both.
-
- Apr 20, 2012
-
-
Brad King authored
Move the CMake version number components out of "CMakeLists.txt" into dedicated file "Source/CMakeVersion.cmake". Set the TWEAK level to the date explicitly. Add a "Source/CMakeVersion.bash" script to update the date, thus replacing KWSys DateStamp for CMake. Teach the bootstrap script to extract the version components from their new location.
-
- Mar 09, 2012
-
-
Brad King authored
Some per-target information and logic is common to all generators. Some of that information is currently stored in cmTarget but that should be reserved for the configure step. Create a class to hold per-target information for generators. On construction classify sources from the target and store them in separate members. This classification is already implemented separately in each generator.
-