summaryrefslogtreecommitdiffstats
path: root/bootstrap
Commit message (Collapse)AuthorAgeFilesLines
* Add option to pass custom flags to sphinx-build (#15545)Brad King2015-04-301-0/+8
| | | | | | | | Create a SPHINX_FLAGS cache entry that users can populate with command-line flags for sphinx-build. Add an option to the bootstrap script to populate it up front. Suggested-by: Felix Geyer <debfx@ubuntu.com>
* bootstrap: Fix SPHINX_{MAN,HTML,QTHELP} cache entry typeBrad King2015-04-301-3/+3
| | | | These cache entries should be generated with type BOOL, not FILEPATH.
* Merge topic 'introduce-cmState'Brad King2015-04-131-0/+1
|\ | | | | | | | | | | | | | | f081c5bd cmState: Move CacheEntryType enum from cmCacheManager. f71fdf0e cmMakefile: Remove unused CacheManager accessor. ff7169a0 Port to cmState. a6b1ad13 Introduce cmState class.
| * Introduce cmState class.Stephen Kelly2015-04-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At this point, it is an interface to the cache. It will be extended to be a universal interface for access to and manipulation of configuration-time data (defintions, properties on targets, directories, source files etc). This will allow porting all command implementations away from the cmMakefile and cmTarget classes, and result in something more-purely related to configuration-time processing of cmake commands. That should serve at least the following goals: * Split the CMake implementation more definitively into three stages: Configuration, computation and generation, and be able to implement each optimally for memory access patterns etc. * Make better IDE integration possible by making more configuration data available. * Make it possiblte to use a smaller library than CMakeLib.a in cpack and ctest, resulting in smaller executables. * Make it possible to run the configure step multiple times in the same CMake run (#14539). Manage its lifetime in the cmake class, and add a convenience accessor to cmMakefile.
* | Remove some files which do not need to be in BootstrapCommands.Stephen Kelly2015-04-121-1/+3
|/
* Genex: Split cmGeneratorExpressionContext into own file.Stephen Kelly2015-03-101-0/+1
|
* Genex: Split cmGeneratorExpressionNode into own file.Stephen Kelly2015-03-101-0/+1
|
* Merge topic 'private-FindJsonCpp'Brad King2015-02-231-2/+4
|\ | | | | | | | | | | a41d621d bootstrap: Add --(no-)system-jsoncpp options a5768442 FindJsonCpp: Drop new module due to upstream jsoncpp providing package
| * bootstrap: Add --(no-)system-jsoncpp optionsBrad King2015-02-201-2/+4
| | | | | | | | Provide bootstrap-time control for using a system JsonCpp library.
* | Merge topic 'bootstrap-sphinx-qthelp'Brad King2015-02-111-0/+8
|\ \ | |/ | | | | | | 85fd62ee bootstrap: Add --sphinx-qthelp option to enable qthelp doc generation
| * bootstrap: Add --sphinx-qthelp option to enable qthelp doc generationNuno Sucena Almeida2015-02-101-0/+8
| |
* | bootstrap: Enable color Makefile outputBrad King2015-02-051-3/+6
|/ | | | | | Build the needed infrastructure during bootstrap in order to allow "cmake -E cmake_echo_color" to be used unconditionally during generation.
* Merge topic 'drop-ancient-workarounds'Brad King2015-01-121-30/+0
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0f7bdd61 Remove VS 6 special case. 5e92c826 Remove some obsolete stuff. 15e42bb2 cmStandardIncludes: Remove obsolete cmOStringStream. 931e055d Port all cmOStringStream to std::ostringstream. f194a009 Remove unused cmIStringStream class. 3ec1bb15 cmStandardIncludes: Remove std namespace hack. bb3bce70 cmStandardIncludes: Remove ANSI_FOR_SCOPE hack. 28fa4923 cmStandardIncludes: Remove iostreams workaround for obsolete Compaq compiler. 837a8a63 cmStandardIncludes: Drop Comeau-related workaround. 4030ddfd Remove Borland-related undef. 17d6a6fd cmStandardIncludes: Remove comment about Borland. 26fb5011 Drop SGI as a CMake host compiler.
| * Remove some obsolete stuff.Stephen Kelly2015-01-111-29/+0
| | | | | | | | | | We don't need to run compiler tests for ansi-for etc anymore. All supported compilers support the features tested here.
| * cmStandardIncludes: Remove obsolete cmOStringStream.Stephen Kelly2015-01-111-1/+0
| |
* | SolarisStudio: Use alternative standard library to build CMake.Stephen Kelly2015-01-111-0/+29
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SolarisStudio ships a very old RogueWave standard library implementation (libCstd) and uses it by default for backward compatibility. The macros defined when building the system libCstd need to be the same as the macros defined when using it for binary compatibility reasons etc. The SolarisStudio compiler driver adds macros such as _RWSTD_NO_MEMBER_TEMPLATES and _RWSTD_NO_CLASS_PARTIAL_SPEC etc. These macros disable certain APIs in the standard library headers. Although the compiler supports the features 'member templates' and 'partial template specialization', the standard library does not provide APIs which rely on those features. This means that std::vector::insert in libCStd does not accept a pair of iterators from a different type of container, because that requires member templates, and reverse_iterator<const T> can not be constructed from a reverse_iterator<T> because that requires partial specialization (or at least the _RWSTD_NO_CLASS_PARTIAL_SPEC define) and member templates. This causes many problems while building CMake using SolarisStudio, which have not been well understood until now. The problems are usually attributed to compiler limitations, while actually the problem is in the standard library, as in commit v3.0.0-rc1~99^2~1 (Help: Document non-use of std::set::insert., 2014-01-24) and commit 107dcac3 (Fix compilation with the Oracle / Sun compiler (#15318), 2014-12-12). SolarisStudio 12.3 and earlier also ships a version of stlport which may be used instead of libCstd by specifying -library=stlport4 https://docs.oracle.com/cd/E18659_01/html/821-1383/bkakg.html SolarisStudio 12.4 ships a version of libstdc++ from GCC 4.8.2 which may be used by specifying -std=c++03 or -std=c++11 etc http://docs.oracle.com/cd/E37069_01/html/E37075/bkamw.html#OSSCPgnaof Use these more-capable standard library implementations when building cmake. This will allow more use of 'normal' C++ (such as std::vector::insert), and cause fewer surprises resulting from dashboards using SolarisStudio. Because cmake is not a library linked against by 3rd parties and does not have external dependencies, issues related to mixing code using libCStd and libstdc++ do not apply.
* bootstrap: Fix syntax for Solaris 10 shell (#15317)Brad King2014-12-181-1/+1
| | | | | | | | In commit v3.1.0-rc2~7^2 (Workaround for short jump tables on PA-RISC, 2014-11-04) we added use of shell syntax not supported on the Solaris shell. Avoid using the '!' operator. Reported-by: Friedrich Haubensak <hsk@imb-jena.de>
* Workaround for short jump tables on PA-RISC.Chuck Atkins2014-11-101-10/+27
| | | | | | | The PA-RISC architecture requires special options for GCC to prevent linker errors when libraries reach a certain size and / or complexity. See http://mraw.org/blog/2007/10/10/Linking_on_hppa and gcc documentation on -mlong-calls.
* Merge topic 'bootstrap-cmake-locations'Brad King2014-06-271-3/+6
|\ | | | | | | | | | | 6650b0fa bootstrap: Fix "make test" and "make package" targets (#14989) bc151757 bootstrap: Clarify name of configured source directory
| * bootstrap: Fix "make test" and "make package" targets (#14989)Brad King2014-06-251-0/+3
| | | | | | | | | | | | | | | | | | Since commit v3.0.0-rc1~374^2 (Refactor internal resource location APIs and initialization, 2013-11-07) a bootstrap-built "cmake" tries to reference "ctest" and "cpack" executables next to itself, which never exist. Teach cmSystemTools::FindCMakeResources, when bootstrap-built, to refer to the "ctest" and "cpack" executables in the location where they will be built after "make".
| * bootstrap: Clarify name of configured source directoryBrad King2014-06-251-3/+3
| | | | | | | | | | Rename CMAKE_ROOT_DIR to CMAKE_BOOTSTRAP_SOURCE_DIR to clarify both that it is only for bootstrap and that it refers to the source directory.
| * CompileFlags: Add -AA +hpxstd98 on HP-UX 11.11 with aCCRolf Eike Beer2014-05-061-1/+24
| | | | | | | | | | These flags are needed to enable support for C++98. Also teach the 'bootstrap' script to add them if necessary.
* | Add an "installed file" property scopeNils Gladitz2014-05-281-0/+2
| | | | | | | | | | | | | | Teach set_property and get_property an "INSTALL" property type to be associated with install-tree file paths. Make the properties available to CPack for use during packaging. Add a "prop_inst" Sphinx domain object type for documentation of such properties.
* | CompileFlags: Add -AA +hpxstd98 on HP-UX 11.11 with aCCRolf Eike Beer2014-04-041-1/+24
| | | | | | | | | | These flags are needed to enable support for C++98. Also teach the 'bootstrap' script to add them if necessary.
* | Unicode: check encoding of files given to configure_file.Clinton Stimpson2014-03-171-0/+1
|/ | | | UTF-16 and UTF-32 files are rejected.
* Change version scheme to use only two components for feature levelsBrad King2014-02-191-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Merge topic 'cmake-devel-version-macro'Brad King2014-02-111-0/+15
|\ | | | | | | | | | | | | 9bcc1b21 Export: Fix internal CMake version test logic d2059d25 cmVersion: Fix CMake_VERSION_ENCODE for date in patch level 28805109 cmStandardIncludes: Include cmIML/INT.h for portable integer types
| * cmStandardIncludes: Include cmIML/INT.h for portable integer typesBrad King2014-02-101-0/+15
| | | | | | | | Also teach the bootstrap script to configure the needed headers.
* | CMakeLists: Generate the cmCommands.cxx file.Stephen Kelly2014-02-091-1/+1
|/ | | | | | | | | | | | 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.
* bootstrap: improve ld flag for Linux/HPPA buildsRolf Eike Beer2014-01-151-4/+1
| | | | | | | 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
* bootstrap: Add KWSys Encoding and FStreamBrad King2013-11-251-0/+20
| | | | | | 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.
* bootstrap: Parse Copyright.txt instead of duplicating noticeBrad King2013-11-121-1/+3
| | | | | Use 'grep' to extract the copyright notice from Copyright.txt instead of duplicating it in the bootstrap script.
* Shorten CMake version used in install destinationsBrad King2013-10-251-1/+7
| | | | | | | | | | | | | | | | | | 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.
* Merge topic 'remove-cmake-i-wizard'Brad King2013-10-221-1/+0
|\ | | | | | | | | a8226e9 cmake: Drop support for "-i" wizard mode
| * cmake: Drop support for "-i" wizard modeBrad King2013-10-181-1/+0
| | | | | | | | | | Tell users to pass cache values with the -D option on the command line or use cmake-gui or ccmake.
* | cmSystemTools: Drop old RunCommand methodBrad King2013-10-191-2/+1
|/ | | | | All calls to this method have been replaced by newer infrastructure. Remove it and the supporting cmWin32ProcessExecution class.
* Build Help documentation during CMake build using SphinxBrad King2013-10-161-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Drop builtin property documentationBrad King2013-10-161-1/+0
| | | | | | 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.
* Drop all documentation formatters except UsageBrad King2013-10-161-1/+0
| | | | | | | | 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.
* Cleanup use of CMake version in install destinationsBrad King2013-10-151-9/+30
| | | | | | | | | | | | | | | | | 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.
* bootstrap: Report -rc# in --version outputBrad King2013-10-151-0/+4
|
* cmake: Split -E command implementation into separate source fileBrad King2013-10-031-0/+1
| | | | | | | | | | | 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.
* bootstrap: try better workaround for builds on Linux/HPPARolf Eike Beer2013-09-121-1/+4
| | | | | | | | | | | | | 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.
* Clean up install rules of CMake itself (#14371)Brad King2013-08-261-10/+10
| | | | | | | | | | | 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.
* bootstrap: Do not suppress CMAKE_OSX_SYSROOT if CFLAGS have -isysroot (#14324)Brad King2013-08-021-8/+0
| | | | | | | | | 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.
* Split cmBootstrapCommands.cxx into two sourcesBrad King2013-06-141-6/+12
| | | | | The single translation unit has grown too large for some compilers. Split it into cmBootstrapCommands1.cxx and cmBootstrapCommands2.cxx.
* bootstrap: Compile KWSys SystemTools with UTIME(S|NSAT) valuesBrad King2013-06-031-1/+9
| | | | | | | 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.
* Add a new Export generator for IMPORTED targets.Stephen Kelly2013-02-221-0/+1
| | | | | | 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.
* bootstrap: use better defaults for HaikuRolf Eike Beer2013-01-071-1/+3
| | | | These values are patched into that file by Haiku since 2.8.1.
* Remove references to KWSys Process Win9x supportBrad King2012-12-191-24/+3
| | | | | | 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.