summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.h
Commit message (Collapse)AuthorAgeFilesLines
* cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.Stephen Kelly2014-04-071-0/+2
| | | | | These are used to determine whether to add -std=c++11, -std=gnu++11 etc flags on the compile line.
* Remove extra semicolons from C++ code.Stephen Kelly2014-04-031-5/+5
| | | | | Clang based tools running over the code complain about these, but clang has a fixit for removing them.
* cmLocalGenerator: Add ComputeObjectFilenames interface.Stephen Kelly2014-03-131-0/+4
| | | | | Implement it in the local generators and use it in the global generators.
* Generalize cmCustomCommandGenerator to more fieldsBrad King2014-03-121-1/+2
| | | | | | | Until now the cmCustomCommandGenerator was used only to compute the command lines of a custom command. Generalize it to get the comment, working directory, dependencies, and outputs of custom commands. Update use in all generators to support this.
* stringapi: Pass configuration names as stringsBen Boeckel2014-03-081-10/+10
|
* strings: Remove cmStdString referencesBen Boeckel2014-03-081-3/+3
| | | | | | | | | | | 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: Take strings in escaping functionsBen Boeckel2014-03-081-4/+5
|
* stringapi: Use strings in target nameBen Boeckel2014-03-081-3/+3
|
* stringapi: Use strings in Convert methods in LocalGeneratorBen Boeckel2014-03-081-9/+11
| | | | | The C strings were turned into std::strings internally anyways and most callers used .c_str().
* stringapi: Use strings for the languagesBen Boeckel2014-03-081-12/+16
|
* stringapi: Use strings for variable namesBen Boeckel2014-03-081-1/+1
| | | | Variable names are always generated by CMake and should never be NULL.
* stringapi: Use strings for property namesBen Boeckel2014-03-081-2/+2
| | | | Property names are always generated by CMake and should never be NULL.
* cmLocalGenerator: Add response file option to OutputLinkLibrariesBrad King2014-03-041-1/+2
| | | | | Response files require different path conversion to be threaded through construction of the link libraries flags.
* cmLocalGenerator: Add format option to ConvertToLinkReferenceBrad King2014-03-041-1/+2
| | | | Replace the hard-coded SHELL output format with an optional argument.
* cmLocalGenerator: Add format option to ConvertToIncludeReferenceBrad King2014-03-041-1/+2
| | | | Replace the hard-coded SHELL output format with an optional argument.
* cmLocalGenerator: Add format option to ConvertToOutputForExistingBrad King2014-03-041-3/+6
| | | | Replace the hard-coded SHELL output format with an optional argument.
* MSVC: Add properties to configure compiler PDB files (#14762)Brad King2014-02-261-0/+1
| | | | | | | | | | Since commit v2.8.12~437^2~2 (VS: Separate compiler and linker PDB files 2013-04-05) we no longer set /Fd with the PDB_NAME or PDB_OUTPUT_DIRECTORY properties. Those properties now exclusively handle linker PDB files. Since STATIC libraries do not link their compiler PDB file becomes more important. Add new target properties "COMPILE_PDB_NAME[_<CONFIG>]" and "COMPILE_PDB_OUTPUT_DIRECTORY[_<CONFIG>]" to specify the compiler PDB file location and pass the value to the MSVC /Fd option.
* cmVersion: Fix CMake_VERSION_ENCODE for date in patch levelBrad King2014-02-101-2/+2
| | | | | | | | | Use a uint64_t to store encoded version numbers so we have plenty of bits available. Encode with room for up to 1000 minor releases between major releases and to encode dates until the year 10000 in the patch level. This is necessary because CMake development versions prior to release 2.8.0 used the date in the patch level, and this practice may be restored after the 3.0 release.
* cmLocalGenerator: Constify target definitions accessStephen Kelly2013-12-111-2/+3
|
* CTest: filter /showIncludes output from ninja compile launcherNils Gladitz2013-12-031-0/+1
| | | | | Teach "ctest --launch" a new "--filter-prefix" option. Set it using the CMAKE_CL_SHOWINCLUDES_PREFIX value with the Ninja generator.
* Drop compatibility with CMake < 2.4Brad King2013-10-231-3/+1
| | | | | | | | | | | | Drop all behavior activated by setting CMAKE_BACKWARDS_COMPATIBILITY to a value lower than 2.4, and generate an error when projects or the user attempt to do so. In the error suggest using a CMake 2.8.x release. Teach cmake_minimum_required to warn about projects that do not require at least CMake 2.4. They are not supported by CMake >= 3.0. Replace the documentation of CMAKE_BACKWARDS_COMPATIBILITY with a reference to policy CMP0001.
* Unify the way the flags of a static library are readPatrick Gansterer2013-07-311-0/+5
| | | | | Introduce cmLocalGenerator::GetStaticLibraryFlags() to have a central function for getting the linker flags for a given target.
* Merge topic 'drop-old-vs-dependency'Brad King2013-07-161-2/+0
|\ | | | | | | | | 4bb6e24 VS,Xcode: Drop incorrect legacy dependency trace (#14291)
| * VS,Xcode: Drop incorrect legacy dependency trace (#14291)Brad King2013-07-151-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Drop the "vsProjectFile" argument from cmTarget::TraceDependencies. It appears to be the modern equivalent to a hunk added in commit ba68f771 (...added new custom command support, 2003-06-03): + name = libName; + name += ".dsp.cmake"; + srcFilesToProcess.push(name); but was broken by refactoring at some point. The current behavior tries to trace dependencies on a source file named the same as a target, which makes no sense. Furthermore, in code of the form add_executable(foo foo.c) add_custom_command(OUTPUT "${somewhere}/foo" ... DEPENDS foo) the "vsProjectFile" value "foo" matches source "${somewhere}/foo.rule" generated to hold the custom command and causes the command to be added to the "foo" target incorrectly. Simply drop the incorrect source file trace and supporting logic.
* | Merge topic 'tid-system-argument'Brad King2013-07-161-0/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 9cf3547 Add the INTERFACE_SYSTEM_INCLUDE_DIRECTORIES target property. 1925cff Add a SYSTEM parameter to target_include_directories (#14180) 286f227 Extend the cmTargetPropCommandBase interface property handling. 83498d4 Store system include directories in the cmTarget. f1fcbe3 Add Target API to determine if an include is a system include. 2679a34 Remove unused variable.
| * | Add Target API to determine if an include is a system include.Stephen Kelly2013-07-021-0/+1
| |/ | | | | | | | | The implementation can be modified later so that system includes can be determined on a per-target basis.
* | Refactor cmTarget::GetCompileDefinitions to use an out-vector, not a string.Stephen Kelly2013-07-111-0/+2
| | | | | | | | Refactor to create AddCompileDefinitions.
* | Overload cmLocalGenerator::AppendDefines to add a list.Stephen Kelly2013-07-101-0/+3
|/
* Refactor target COMPILE_OPTIONS and COMPILE_FLAGS handlingBrad King2013-06-271-3/+2
| | | | | | | | | | | | Replace the cmLocalGenerator GetCompileOptions method with an AddCompileOptions method since all call sites of the former simply append the result to a flags string anyway. Add a "lang" argument to AddCompileOptions and move the CMAKE_<LANG>_FLAGS_REGEX filter into it. Move the call sites in each generator to a location that has both the language and configuration available. In the Makefile generator this also moves the flags from build.make to flags.make where they belong.
* Escape target flags taken from COMPILE_OPTIONSBrad King2013-06-271-0/+1
| | | | | | | | | | | | Factor appending of individual flags out into an AppendFlagEscape method in cmLocalGenerator and teach it to use EscapeForShell. Update all COMPILE_OPTIONS handling to use AppendFlagEscape. Override the method in the Xcode generator to use its custom escape implementation. Teach the CompileOptions test to add an option that requires escaping everywhere instead of just with the GNU tools.
* Merge topic 'VISIBILITY_PRESET-property'Brad King2013-06-051-0/+2
|\ | | | | | | | | | | cd1fa53 Add a COMPILE_OPTION for a VISIBILITY_INLINES_HIDDEN target property. 0e9f4bc Introduce target property <LANG>_VISIBILITY_PRESET
| * Introduce target property <LANG>_VISIBILITY_PRESETStephen Kelly2013-06-021-0/+2
| | | | | | | | | | | | This is initialized by CMAKE_<LANG>_VISIBILITY_PRESET. The target property is used as the operand to the -fvisibility= compile option with GNU compilers and clang.
* | Add cmLocalGenerator::GetCompileOptions.Stephen Kelly2013-06-021-0/+3
|/ | | | | | Currently it only adds the contents of the COMPILE_FLAGS target property, but it can be extended to handle a new COMPILE_OPTIONS generator expression enabled property.
* cmLocalGenerator: remove "virtual" where not usedAlex Neundorf2013-02-201-5/+5
| | | | | | | This patch makes several functions of cmLocalGenerator which are marked as virtual non-virtual, since they are not reimplemented anywhere. Alex
* Process generator expressions for 'system' include directories.Stephen Kelly2013-02-071-1/+2
| | | | | | | | | | Since commit 08cb4fa4 (Process generator expressions in the INCLUDE_DIRECTORIES property., 2012-09-18), it is possible to use generator expressions with the include_directories command. As that command can also have a SYSTEM argument, ensure that the result of using that argument with generator expressions gives a sane result.
* Process the INTERFACE_PIC property from linked dependenciesStephen Kelly2013-01-101-1/+1
| | | | | | | | | This allows a dependee to inform a target that it should have its POSITION_INDEPENDENT_CODE property set to ON, or OFF. The value of the POSITION_INDEPENDENT_CODE property, if set, must be consistent with any INTERFACE_POSITION_INDEPENDENT_CODE properties on dependees. Add a test covering the consistency checks on platforms where they run.
* Automoc: get include dirs without stripping implicit include dirs offAlex Neundorf2012-12-071-1/+2
| | | | | | | | | This should finally fix #13667 and #13762. Instead of adding special handling to guess whether implicit include dirs may have been removed, simply make it possible to query the include dirs without removing the implicit ones. Alex
* Fix config-specific INCLUDE_DIRECTORIES in multi-config generatorsStephen Kelly2012-10-171-1/+1
| | | | | | | | Commit 08cb4fa4 (Process generator expressions in the INCLUDE_DIRECTORIES property, 2012-09-18) contained an incorrect assumption that CMAKE_BUILD_TYPE was set on the makefile for each generated configuration in multi-config generators. Fix that by making the GetIncludeDirectories API depend on the config.
* Merge topic 'ninja-LIBPATH'Brad King2012-10-021-1/+6
|\ | | | | | | | | | | | | 1e47ccb Ninja: add option to enforce usage of response files e31df03 Ninja: move <OBJECTS> in front of the first linker option 8d674e7 Ninja: move -LIBPATH behind -link option
| * Ninja: move -LIBPATH behind -link optionPeter Kümmel2012-10-011-1/+6
| | | | | | | | Don' pass linker option to the compile
* | Add an AppendDefines std::string overload.Stephen Kelly2012-09-211-0/+5
|/ | | | This makes it easier to use with cmGeneratorTarget::GetCompileDefinitions.
* Move GetIncludeDirectories to cmGeneratorTarget.Stephen Kelly2012-09-191-1/+1
|
* Port cmLocalGenerator::GetTargetFlags to cmGeneratorTarget.Stephen Kelly2012-09-191-2/+3
|
* Make cmLocalGenerator::AddArchitectureFlags take a cmGeneratorTarget.Stephen Kelly2012-09-191-3/+4
|
* Don't duplicate -D defines sent to the compiler.Stephen Kelly2012-08-201-2/+8
| | | | | | | | | | | There is no need to do so. Be consistent with include directories and ensure uniqueness. This requires changing the API of the cmLocalGenerator::AppendDefines method, and changing the generators to match. The test unfortunately can't test for uniqueness, but it at least verifies that nothing gets lost.
* Merge topic 'ninja-cldeps'David Cole2012-06-191-0/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | eb410e8 Ninja: disable cldeps for bcc32, it's too old, and ninja would also not build 5ead31d Ninja: try work around for bcc32 bug 1333b57 Ninja: build server fixes 9081e3a remove warning about unused parameter f430bea Ninja: maybe this fixes the bcc32 build f2c1288 Ninja: msvc6 for-scoping 44b9bbc Ninja: build with old msvc versions 57156a5 Ninja: build server fixes f1abdce Ninja: some bytes of the rc files couldn't be piped correctly 2de963d Ninja: don't remove space between command and parameters 50b6f33 Ninja: build cmcldeps with mingw c05653e Ninja: try to make GetProcessId visible ab245ff Ninja: but cl supports /nologo ... bf58e9a Ninja: no /nologo option in old rc.exe 2fb07fc Ninja: Eclipse and KDevelop fixes for ninja 518c065 Ninja: don't pollute build dir with preprocessed rc files ...
| * remove warning about unused parameterPeter Kuemmel2012-06-161-1/+1
| |
| * Ninja: Eclipse and KDevelop fixes for ninjaPeter Kuemmel2012-06-151-0/+4
| | | | | | | | Thx to Claus Klein
| * Ninja: work with ninja/master, don't compile rc files with clPeter Kuemmel2012-06-121-0/+1
| | | | | | | | | | Ninja generates for paths with spaces wrong results for $out.d, using the new DEP_FILE variable instead.
* | Refactor generation of shared library flagsStephen Kelly2012-06-121-1/+7
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | CMAKE_SHARED_LIBRARY_<lang>_FLAGS has flags on various platforms for a variety of purposes that are correlated with shared libraries but not exclusive to them. Refactor generation of these flags to use new purpose-specific platform variables CMAKE_<lang>_COMPILE_OPTIONS_DLL CMAKE_<lang>_COMPILE_OPTIONS_PIC CMAKE_<lang>_COMPILE_OPTIONS_PIE Activate the DLL flags specifically for shared libraries. Add a new POSITION_INDEPENDENT_CODE target property to activate PIC/PIE flags, and default to true for shared libraries to preserve default behavior. Initialize the new property from CMAKE_POSITION_INDEPENDENT_CODE to allow easy global configuration in projects. Although the default behavior is unchanged by this refactoring, the new approach ignores CMAKE_SHARED_LIBRARY_<lang>_FLAGS completely. We must leave it set in case projects reference the value. Furthermore, if a project modifies CMAKE_SHARED_LIBRARY_<lang>_FLAGS it expects the new value to be used. Add policy CMP0018 to handle compatibility with projects that modify this platform variable. Add a PositionIndependentCode test on platforms where we can get meaningful results.