summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalUnixMakefileGenerator3.cxx
Commit message (Collapse)AuthorAgeFilesLines
* stringapi: Pass configuration names as stringsBen Boeckel2014-03-081-1/+1
|
* strings: Remove cmStdString referencesBen Boeckel2014-03-081-6/+6
| | | | | | | | | | | Casts from std::string -> cmStdString were high on the list of things taking up time. Avoid such implicit casts across function calls by just using std::string everywhere. The comment that the symbol name is too long is no longer relevant since modern debuggers alias the templates anyways and the size is a non-issue since the underlying methods are generated since it's inherited.
* stringapi: Use strings for VS project namesBen Boeckel2014-03-081-1/+1
|
* stringapi: Use strings in target nameBen Boeckel2014-03-081-7/+5
|
* cmGeneratorTarget: Add methods to access source file groups.Stephen Kelly2014-01-091-3/+5
| | | | | These methods and others will be able to get a config parameter later to implement the INTERFACE_SOURCES feature.
* Constify handling of target dependencies.Stephen Kelly2013-12-111-7/+8
|
* Remove INTERFACE build targets.Stephen Kelly2013-12-101-55/+37
| | | | | | | | | | | | | | | Commit b04f3b9a (Create make rules for INTERFACE_LIBRARY targets., 2013-08-21) extended the makefile generator to create build targets for INTERFACE_LIBRARY targets. No other generators were extended with this feature. This conflicts with the feature of whitelisting of target properties read from INTERFACE_LIBRARY targets. The INTERFACE_* properties of the INTERFACE_LIBRARY may legitimately contain TARGET_PROPERTY generator expressions for reading properties from the 'head target'. The 'head target' would be the INTERFACE_LIBRARY itself when creating the build rules for it, which means that non-whitelisted properties would be read.
* Port some of the generator API to cmGeneratorTarget.Stephen Kelly2013-11-221-58/+77
| | | | | | | Just enough to reach the BuildMacContentDirectory method and the NeedRelinkBeforeInstall methods. In the future, those methods can be moved to cmGeneratorTarget.
* Teach GenerateBuildCommand to find its own make programBrad King2013-11-181-1/+3
| | | | | | | | Add a cmGlobalGenerator::SelectMakeProgram method to select a caller-provided make program, the CMAKE_MAKE_PROGRAM cache entry, or a generator-provided default. Call it from all implementations of the GenerateBuildCommand method with the corresponding generator's default, if any.
* cmGlobalGenerator: Cleanup GenerateBuildCommand APIBrad King2013-11-181-29/+17
| | | | | | | | | All cmGlobalGenerator::GenerateBuildCommand call sites that need to produce a string now generate "cmake --build" commands. The remaining call sites immediately pass the result to cmSystemTools::RunSingleCommand. Avoid the intermediate string and argument parsing by directly producing a vector of strings. Also drop the ignoreErrors argument because no call sites remain that use it.
* Refactor tool selection for edit_cache (#14544)Brad King2013-11-121-0/+44
| | | | | | | | | Refactor edit_cache tool selection to ask each global generator for its preference. Teach the Ninja generator to always use cmake-gui because Ninja by design cannot run interactive terminal dialogs like ccmake. Teach the Makefile generator to use cmake-gui when also using an "extra" generator whose IDE has no terminal to run ccmake, and otherwise fall back to CMAKE_EDIT_COMMAND selection for normal Makefile build systems.
* Create make rules for INTERFACE_LIBRARY targets.Stephen Kelly2013-10-211-37/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The result is that the depends of the target are created. So, add_library(somelib foo.cpp) add_library(anotherlib EXCLUDE_FROM_ALL foo.cpp) add_library(extra EXCLUDE_FROM_ALL foo.cpp) target_link_libraries(anotherlib extra) add_library(iface INTERFACE) target_link_libraries(iface INTERFACE anotherlib) Executing 'make iface' will result in the anotherlib and extra targets being made. Adding a regular executable to the INTERFACE of an INTERFACE_LIBRARY will not result in the executable being built with 'make iface' because of the logic in cmComputeTargetDepends::AddTargetDepend. So far, this is implemented only for the Makefile generator. Other generators will follow if this feature is possible for them. Make INTERFACE_LIBRARY targets part of the all target by default. Test this by building the all target and making the expected library EXCLUDE_FROM_ALL.
* Drop the 'Full' field from cmDocumentationEntryBrad King2013-10-161-4/+0
| | | | | We need only 'Brief' for usage documentation. We no longer have builtin 'Full' documentation, which is now in Help/*/*.rst files.
* Merge topic 'INTERFACE_LIBRARY-target-type'Brad King2013-10-081-0/+8
|\ | | | | | | | | | | | | ce0c303 install: Teach EXPORT option to handle INTERFACE_LIBRARY targets 435c912 export: Add support for INTERFACE_LIBRARY targets fe73226 Add the INTERFACE_LIBRARY target type.
| * Add the INTERFACE_LIBRARY target type.Stephen Kelly2013-10-071-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This target type only contains INTERFACE_* properties, so it can be used as a structural node. The target-specific commands enforce that they may only be used with the INTERFACE keyword when used with INTERFACE_LIBRARY targets. The old-style target properties matching LINK_INTERFACE_LIBRARIES_<CONFIG> are always ignored for this target type. The name of the INTERFACE_LIBRARY must match a validity generator expression. The validity is similar to that of an ALIAS target, but with the additional restriction that it may not contain double colons. Double colons will carry the meaning of IMPORTED or ALIAS targets in CMake 2.8.13. An ALIAS target may be created for an INTERFACE library. At this point it can not be exported and does not appear in the buildsystem and project files are not created for them. That may be added as a feature in a later commit. The generators need some changes to handle the INTERFACE_LIBRARY targets returned by cmComputeLinkInterface::GetItems. The Ninja generator does not use that API, so it doesn't require changes related to that.
* | Generate modern-style cmake code.Stephen Kelly2013-08-221-5/+5
|/ | | | | | | | | | | The commits 9db31162 (Remove CMake-language block-end command arguments, 2012-08-13) and 77543bde (Convert CMake-language commands to lower case, 2012-08-13) changed most cmake code to use lowercase commands and no parameters in termination commands. However, those changes excluded cmake code generated in c++ by cmake. Make a similar style change to code generated by cmake.
* Add projectDir parameter to GenerateBuildCommandPetr Kmoch2013-04-121-3/+5
| | | | | | | | Extend the cmGlobalGenerator::GenerateBuildCommand virtual method signature with a "projectDir" parameter specifying the top of the project build tree for which the build command will be generated. Populate it from call sites in cmGlobalGenerator::Build where a fully-generated build tree should be available.
* Make cmGlobalGenerator::GetDocumentation() a static functionPatrick Gansterer2012-11-191-2/+2
| | | | | Making the function static allows us to call it directly, without creating and removing an instance of the generator.
* Move the EscapeJSON method to a sharable location.Stephen Kelly2012-06-041-15/+6
|
* Build object library targets in MakefilesBrad King2012-03-131-0/+5
| | | | | | Treat OBJECT libraries as STATIC libraries but leave out the archive step. The object files will be left behind for reference by other targets later.
* Pre-compute and store target object directory in cmGeneratorTargetBrad King2012-03-121-0/+1
| | | | | | | Add cmGeneratorTarget::ObjectDirectory member to hold the value. In ComputeTargetObjects set the value to the full path to the target object directory including any necessary placeholder for the configuration name.
* Pre-compute object file names before Makefile generationBrad King2012-03-091-0/+32
| | | | | | | Add a virtual cmGlobalGenerator::ComputeTargetObjects method invoked during cmGeneratorTarget construction. Implement it in the Makefile generator to pre-compute all object file names for each target. Use the results during generation instead of re-computing it later.
* Introduce a cmGlobalGenerator::ResolveLanguageCompiler functionPeter Collingbourne2011-10-021-69/+1
| | | | | | It is factored out of cmGlobalUnixMakefileGenerator3::EnableLanguage, and may be used by other generators to resolve CMAKE_*_COMPILER settings.
* Merge topic 'output-compile-lines'Brad King2011-05-241-0/+41
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cdc2b41 Fix CompileCommandOutput test build on Windows 7039d1f Fix CompileCommandOutput test for Make tools not supporting spaces 4268e3d run_compile_commands: Cast istream::get() result to char c45c60b run_compile_commands: Avoid extra stl vector conversion 7c5be51 run_compile_commands: Avoid shadow in std::map<>::at workaround 169bb05 Provide std::map<>::at for use in run_compile_commands 4e2185c Make std::map usage more portable in language=>flags/defines maps a7e7a04 Fix run_compile_commands build on Apple GCC 3.3 c9174c0 Fix signed/unsigned comparison in EscapeJSON 8346a28 Only offer the compile command output feature on unix systems 0e6b05f Adds a test for the compile command line output. 5674844 make compile command output optional fe07b05 implement cxx command output 65c0c24 cache flags and defines 3f064ef refactor flags and defines
| * Fix signed/unsigned comparison in EscapeJSONBrad King2011-05-161-1/+1
| |
| * make compile command output optionalManuel Klimek2011-04-251-1/+1
| |
| * implement cxx command outputManuel Klimek2011-04-251-0/+41
| |
* | Merge branch 'MakeCodeBlocksGeneratorNonVerbose2' into rule-messagesBrad King2011-05-161-62/+61
|\ \ | |/ | | | | | | | | Conflicts: Source/cmGlobalUnixMakefileGenerator3.cxx Source/cmGlobalUnixMakefileGenerator3.h
| * Don't enforce VERBOSE makefiles for the CodeBlocks generatorAlex Neundorf2010-11-111-1/+0
| | | | | | | | | | | | | | | | | | Instead of enforcing verbose makefile, now the generated build command includes "VERBOSE=1" so the output will be verbose when building in C::B. Also removed the now unused setForceVerboseMakefiles(). Alex
| * Remove trailing whitespaceAlex Neundorf2010-11-111-61/+61
| | | | | | | | Alex
* | Revert "Honor RULE_MESSAGES property for build target messages" (#12190)Brad King2011-05-161-91/+73
|/ | | | | | This reverts commit dc36b3499403bad323d7300139fbf459c31f7a2c. It broke dependency logic instead of only silencing messages. Revert to previous behavior.
* Honor RULE_MESSAGES property for build target messagesCampbell Barton2010-11-031-77/+95
|
* Fix or cast integer conversions in cmakeBrad King2010-06-251-2/+3
| | | | | These were revealed by GCC's -Wconversion option. Fix types where it is easy to do so. Cast in cases we know the integer will not be truncated.
* Qualify std::map compare functor as constBrad King2009-09-291-1/+1
| | | | | | | Some older STL implementations invoke the comparison functor as a const object, so the function call operator must be 'const' qualified. This fixes the commit "Fix support for OLD behavior of policy CMP0002" to compile on older STLs.
* Fix support for OLD behavior of policy CMP0002Brad King2009-09-281-3/+18
| | | | | | | | | The commit "Cleanup make progress rule generation code" introduced a map from target name to the progress.make file location. Policy CMP0002's OLD behavior allows duplicate target names in different directories, so only one ends up with a progress.make file. This commit fixes the map to order by target name first and build directory second, restoring support for duplicate target names.
* Convert CMake to OSI-approved BSD LicenseBrad King2009-09-281-15/+9
| | | | | | | 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.
* Rescan dependencies also if CMakeDirectoryInformation.cmake has changed.Alexander Neundorf2009-09-221-14/+14
| | | | | | | | If CMakeDirectoryInformation.cmake is newer than depend.internal the include directories may have changed, so dependencies need to be scanned again. Ok by Brad. Alex
* ENH: Pass config to cmTarget RPATH install methodsBrad King2009-07-081-3/+4
| | | | | This passes the build configuration to cmTarget methods IsChrpathUsed and NeedRelinkBeforeInstall. Later these methods will use the value.
* ENH: Cleanup make progress rule generation codeBrad King2009-06-251-41/+74
| | | | | | | | This cleans up the Makefile generator's progress rule code. Instead of keeping every cmMakefileTargetGenerator instance alive to generate progress, we keep only the information necessary in a single table. This approach keeps most of the code in cmGlobalUnixMakefileGenerator3, thus simplifying its public interface.
* ENH: Enable basic OpenVMS platform supportBrad King2009-06-101-1/+1
| | | | | | | | This adds the Modules/Platform/OpenVMS.cmake platform file for OpenVMS. We just use Unix-like rules to work with the GNV compiler front-end. A problem with process execution currently prevents CMake link scripts from working, so we avoid using them.
* BUG: Avoid std::unique algorithm on VMSBrad King2009-06-101-0/+2
| | | | | | The Compaq compiler's std::unique algorithm followed by deletion of the extra elements seems to crash. For now we'll accept the duplicate dependencies on this platform.
* BUG: don't report changed compiler variables if the path to the compilerAlexander Neundorf2009-05-101-12/+20
| | | | | | | differs only e.g. a double slash somewhere instead only one slash as directory separator (#8890) Alex
* BUG: Fix OS X AppBundle/FW byproducts dependenciesBrad King2009-02-061-9/+17
| | | | | | | App Bundle and Framework directories, symlinks, and Info.plist files we create during generation are byproducts, not outputs. We should re-run CMake only when they are missing, not when they are old. See issue #8465.
* ENH: add initial ctest -j featureBill Hoffman2008-07-031-2/+5
|
* ENH: fix for bug 6364, extra help targets when there are subdirectories of ↵Ken Martin2008-06-061-8/+8
| | | | the top level
* BUG: improve progress reporting when there are multiple targets with the ↵Ken Martin2008-05-291-5/+5
| | | | same name, bug# 7042
* BUG: make ENABLE_LANGUAGE(ASM-ATT OPTIONAL) work again: if it didn't workAlexander Neundorf2008-05-121-1/+1
| | | | | | but was optional, don't delete the cache Alex
* ENH: add PHONY targetsBill Hoffman2008-03-241-1/+1
|
* BUG: fix some bad changes in progress calcKen Martin2008-03-121-6/+2
|
* ENH: remove constBill Hoffman2008-01-311-6/+6
|