summaryrefslogtreecommitdiffstats
path: root/bootstrap
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* | | bootstrap: Suppress CMAKE_OSX_SYSROOT if CFLAGS have -isysrootBrad King2012-09-211-0/+8
|/ / | | | | | | | | | | | | 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.
* | cmGeneratorExpression: Re-write for multi-stage evaluationStephen Kelly2012-09-181-0/+3
|/ | | | | | | | 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.
* Make platform information files specific to the CMake versionBrad King2012-08-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Convert CMake-language commands to lower caseKitware Robot2012-08-131-7/+7
| | | | | | | | | | | | | | | | | 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
* Ninja: also bootstrap ninja filesPeter Kümmel2012-07-201-0/+5
|
* Re-factor OS X bundle and framework generation.Nicolas Despres2012-07-171-0/+1
|
* Remove trailing white-spaces.Nicolas Despres2012-07-171-8/+8
|
* Merge topic 'bootstrap-old-sh'David Cole2012-05-291-9/+18
|\ | | | | | | | | e5dc768 bootstrap: Port back to old shells (#13199)
| * bootstrap: Port back to old shells (#13199)Brad King2012-05-081-9/+18
| | | | | | | | | | | | | | | | 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.
* | KWSys: Fix SystemTools environment memory handling (#13156)Brad King2012-04-271-3/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Refactor CMake version handlingBrad King2012-04-201-11/+1
|/ | | | | | | | 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.
* Add cmGeneratorTarget to represent a target during generationBrad King2012-03-091-0/+1
| | | | | | | | | 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.
* bootstrap: Convert MSYS paths to Windows format (#13001)Brad King2012-03-011-4/+14
| | | | | | | | | | | | | We set CMAKE_PREFIX_PATH from the --prefix= option. The calling shell might not translate "/c/..." to "c:/..." paths but we need to store Windows paths in CMake cache variables. Pass the specified path through the MSYS shell in a form it will convert to a Windows path using the MSYS fstab. Some MSYS bash implementations leave trailing space on the command line to 'cmd /c echo ...' after quoting the message. The Windows echo tool preserves both the quotes and the trailing space. Use a sed expression that strips quotes and trailing spaces after the end quote.
* bootstrap: Forward options after '--' to cmakeBrad King2011-12-161-2/+3
| | | | | | | | | | Provide an interface simpler than --init= to set cache values during bootstrap builds. For example: ./bootstrap --system-zlib -- -DZLIB_ROOT=/opt/zlib will configure CMake with a system zlib library and initialize ZLIB_ROOT in the cache for use by FindZLIB.
* bootstrap: Re-implement command line option processingBrad King2011-12-161-57/+28
| | | | | Use POSIX shell features to shorten and simplify bootstrap command-line option processing.
* bootstrap: Update copyright year in version reportBrad King2011-12-161-2/+2
|
* bootstrap: Include cmNewLineStyle in buildBrad King2011-11-291-0/+1
| | | | The cmNewLineStyle class is needed by cmMakefile.
* Removed most usage of Carbon in favour of CoreFoundationSean McBride2011-01-311-2/+2
|
* bootstrap: Add --enable-ccache option (#11707)Nicolas Despres2011-01-171-0/+9
| | | | | | | | | This option tells bootstrap to hand CMake CC="ccache $CC" CXX="ccache $CXX" so that the CMake build tree after bootstrapping uses ccache.
* bootstrap: --verbose implies verbose Makefiles (#11708)Brad King2011-01-171-1/+5
| | | | Suggested-by: Nicolas Despres <nicolas.despres@gmail.com>
* bootstrap: Clarify --init flag documentation (#11431)Brad King2011-01-101-1/+1
|
* bootstrap: Granular system library selection (#11431)Brad King2011-01-101-5/+30
| | | | | | | | | | This adds the ability for packagers to specify that some libraries should use system versions and others should use the CMake versions. This allows a bit of flexibility and means Homebrew (an OSX package manager) no longer has to continue to patch the CMake build process. Inspired-by: Mike McQuaid <mike@mikemcquaid.com>
* Factor out common custom command generatorBrad King2010-12-081-0/+1
| | | | | | The Makefile, VS, and Xcode generators previously duplicated some custom command line generation code. Factor this out into a separate class cmCustomCommandGenerator shared by all generators.
* bootstrap: Honor CFLAGS during "make" test (#10545)Brad King2010-09-101-1/+1
|
* bootstrap: Detect known C/C++ compiler toolchainsBrad King2010-06-301-2/+69
| | | | | | Look for a C/C++ compiler pair from known toolchains on some platforms. This makes it less likely that mismatched compilers will be found. Check only if the environment variables CC and CXX are both empty.
* Tru64: Place cmOStringStream vtable uniquely (#10541)Brad King2010-06-101-0/+1
| | | | | | GCC places the vtable in the object implementing the first non-pure, non-inline virtual method. Since the symbol is not weak on Tru64, make the location unique by putting the destructor in a single object file.
* New version scheme to support branchy workflowBrad King2010-04-231-9/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prepare to switch to the workflow described by "git help workflows". In this workflow, the "master" branch is always used to integrate topics ready for release. Brand new work merges into a "next" branch instead. We need a new versioning scheme to work this way because the version on "master" must always increase. We no longer use an even/odd minor number to distinguish releases from development versions. Since we still support cvs checkout of our source tree we cannot depend on "git describe" to compute a version number based on the history graph. We can use the CCYYMMDD nightly date stamp to get a monotonically increasing version component. The new version format is "major.minor.patch.(tweak|date)". Releases use a tweak level in the half-open range [0,20000000), which is smaller than any current or future date. For tweak=0 we do not show the tweak component, leaving the format "major.minor.patch" for most releases. Development versions use date=CCYYMMDD for the tweak level. The major.minor.patch part of development versions on "master" always matches the most recent release. For example, a first-parent traversal of "master" might see v2.8.1 2.8.1.20100422 v2.8.2 | | | ----o----o----o----o----o----o----o----o---- Since the date appears in the tweak component, the next release can increment the patch level (or any more significant component) to be greater than any version leading to it. Topic branches not ready for release are published only on "next" so we know that all versions on master lead between two releases.
* Fix for bug #10544, make check was sent to the wrong log fileBill Hoffman2010-04-131-3/+3
|
* Fix double bootstrap build for in source buildsBill Hoffman2009-11-101-2/+2
|
* Fix default install prefix on HaikuBrad King2009-09-301-0/+2
| | | | | | | | Since Haiku does not have /usr (and therefore /usr/local), this commit changes the default install prefix to the equivalent directory of /boot/common. See issue #9607.
* Convert CMake to OSI-approved BSD LicenseBrad King2009-09-281-16/+10
| | | | | | | 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.
* Simplify bootstrap script source dir detectionBrad King2009-09-251-2/+1
| | | | | This teaches the bootstrap shell script to detect the CMake source directory from which it is executed using a simpler idiom.
* Make sure KWSYS_DO_NOT_CLEAN_PUTENV is defined at bootstrap time for cmake ↵Bill Hoffman2009-09-221-0/+1
| | | | in the bootstrap script.
* Test KWSYS_IOS_HAVE_BINARY during bootstrapBrad King2009-08-311-0/+11
| | | | | | We need to do this KWSys configuration test in the CMake bootstrap script to create a proper cmsys/Configure.hxx file. This fixes the bootstrap script which was broken by the addition of the test to KWSys.
* Introduce "generator expressions" to add_test()Brad King2009-08-111-0/+1
| | | | | | | | This introduces a new syntax called "generator expressions" to the test COMMAND option of the add_test(NAME) command mode. These expressions have a syntax like $<TARGET_FILE:mytarget> and are evaluated during build system generation. This syntax allows per-configuration target output files to be referenced in test commands and arguments.
* ENH: Improve dynamic variable scope implementationBrad King2009-07-221-0/+1
| | | | | | | | | | | | Previously each new variable scope (subdirectory or function call) in the CMake language created a complete copy of the key->value definition map. This avoids the copy using transitive lookups up the scope stack. Results of queries answered by parents are stored locally to maintain locality of reference. The class cmDefinitions replaces cmMakefile::DefinitionsMap, and is aware of its enclosing scope. Each scope stores only the definitions set (or unset!) inside it relative to the enclosing scope.