summaryrefslogtreecommitdiffstats
path: root/bootstrap
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* Merge topic 'copyright-year'Brad King2012-11-061-1/+1
|\ | | | | | | | | a4ae88b Update programmatically-reported copyright year (#13638)
| * Update programmatically-reported copyright year (#13638)Brad King2012-11-051-1/+1
| | | | | | | | | | Update the copyright year reported by 'bootstrap' and in the generated documentation to report 2012.
* | Linux/PA-RISC: Link with --unique=.text.* to help binutilsRolf Eike Beer2012-10-311-0/+21
|/ | | | | | | | | | | 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.
* Merge topic 'export-sets'Brad King2012-10-011-0/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 80112da Merge topic 'AutomocUseTargetProperties' into export-sets 955b966 exports: add a test for exporting dependent targets 6f50a04 exports: define a CMAKE_FIND_PACKAGE_NAME var set by find_package() 0cfd055 exports: move the handling of missing targets into subclasses 190f2c8 exports: fix build with MSVC6 8b5f448 exports: first try at error handling if a target is missing 87f4c01 exports: accept a missing target if it is exported exactly once 999061a exports: store pointers to all installations of each export set 64b3a6c exports: cmGlobalGenerator::ExportSets destructor will clear it 81cdab5 exports: Hold an ExportSet pointer in cm*Export*Generator 5c898fb exports: Add cmExportSetMap class d13ec1a exports: Create class cmExportSet 4e2347c exports: Rename cmGlobalGenerator::AddTargetToExport{s,} e846e70 exports: Remove cmTargetExport constructor 81c66c8 exports: Move cmTargetExport to a dedicated header file ae4ab62 find_package: add support for a <package>_NOT_FOUND_MESSAGE variable ...
| * Merge topic 'AutomocUseTargetProperties' into export-setsAlex Neundorf2012-09-301-0/+3
| |\ | | | | | | | | | | | | Conflicts: Source/cmGlobalGenerator.h
| * | exports: Add cmExportSetMap classYury G. Kudryashov2012-09-281-0/+1
| | | | | | | | | | | | This is a map<string, cmExportSet *> with overloaded operator[] and destructor.
| * | exports: Create class cmExportSetYury G. Kudryashov2012-09-281-0/+1
| | | | | | | | | | | | | | | Replace direct use of 'std::vector<cmTargetExport const*>' with a dedicated class.
* | | Merge topic 'generator-expression-target-properties'Brad King2012-09-281-0/+1
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 083de7e Process generator expressions in the COMPILE_DEFINITIONS target property. 08cb4fa Process generator expressions in the INCLUDE_DIRECTORIES property. 0ef091d Early return if there is no target. eb250cd Add a self-reference check for target properties. 7e80747 Add API to check that dependent target properties form a DAG. 239ac84 Add a generator expression for target properties. e028381 Extend the generator expression language with more logic. b8e61d6 Refactor GetCompileDefinitions a bit. 2c2b25b Return a std::string from GetCompileDefinitions. b7e48e0 Add an AppendDefines std::string overload. 9a16087 Convert paths in INCLUDE_DIRECTORIES property to Unix slashes. 4557c8d Don't prepend a path before generator expressions in include_directories. c6abc41 Add include guard for cmGeneratorExpression. 0ff4e3f Port remaining code to GetCompileDefinitions(). f178d53 Fix indentation in the code blocks generator.
| * | | Add API to check that dependent target properties form a DAG.Stephen Kelly2012-09-281-0/+1
| | |/ | |/| | | | | | | | | | | | | 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.