summaryrefslogtreecommitdiffstats
path: root/Source/cmTarget.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'consistent-empty-method'Brad King2015-01-191-2/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 5f69314e Replace foo.length() pattern with !foo.empty(). fd0c036c Replace 'foo.length() >= 1' pattern with !foo.empty() f09fde2d Replace 'foo.length() > 0' pattern with !foo.empty(). 86b5bdfa Replace 'foo.length() == 0' pattern with foo.empty(). fd7b3712 Replace foo.size() pattern with !foo.empty(). aa773035 Replace !foo.size() pattern with foo.empty(). 64592633 cmListCommand: Use empty() and expand whitespace. 607e1938 Replace 'foo.size() != 0' pattern with !foo.empty(). 930bd478 Replace 'foo.size() == 0' pattern with foo.empty(). d92887ef Replace 'foo.size() > 0' pattern with !foo.empty().
| * Replace 'foo.size() != 0' pattern with !foo.empty().Stephen Kelly2015-01-181-2/+2
| |
* | Use the cmDeleteAll algorithm for types derived from std::map.Stephen Kelly2015-01-171-10/+2
|/
* Merge topic 'delete-algorithm'Brad King2015-01-151-7/+1
|\ | | | | | | | | | | | | | | 65b81da4 cmVariableWatch: Use the cmDeleteAll algorithm with for_each. 30d2de9a cmGeneratorExpressionEvaluator: Replace own algorithm with cmDeleteAll. 4a6e795b Use the cmDeleteAll algorithm instead of trivial raw loops. abb4a678 Add a generic algorithm for deleting items in a container.
| * Use the cmDeleteAll algorithm instead of trivial raw loops.Stephen Kelly2015-01-131-7/+1
| |
* | Merge topic 'fix-LOCATION-with-TARGET_OBJECTS'Brad King2015-01-151-0/+1
|\ \ | |/ |/| | | | | 23f3798c cmTarget: Compute link language of TARGET_OBJECTS with CMP0026 OLD (#15338)
| * cmTarget: Compute link language of TARGET_OBJECTS with CMP0026 OLD (#15338)Stephen Kelly2015-01-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit v3.1.0-rc1~297^2~5 (cmTarget: Drop 'head' argument from GetSourceFiles, 2014-07-10) exposed a dormant bug in source file computation, causing the test case to regress. After that commit, the source file computation and caching finds an existing container of source files. Prior to that patch, the GetSourceFiles method was called with either a null pointer for the head cmTarget, or it was called with the this pointer. The processSources method is eventually called, which normalizes the difference between the null pointer and the this pointer for the head target. However, the cache key depends on the actual pre-normalized pointer. The change in that commit caused the entry to be found in the cache where it was not before, which resulted in incorrect behavior. Prior to that commit, the test case also fails if the GetSourceFiles overload taking a vector<cmSourceFile*> is changed to normalize the head target at the beginning of the method: cmTarget const* head = head_ ? head_ : this; Such a construct was correctly used in other locations where similar caching was in place, before being removed in commit v3.1.0-rc1~310^2~25 (cmTarget: Remove 'head' argument from GetLinkInformation, 2014-06-12), but is not neccessary anymore. Commit v3.1.0-rc1~674^2~2 (cmTarget: Cache the cmSourceFiles in GetSourceFiles., 2014-04-05) introduced the caching, but fails the test case for an unrelated reason. That unrelated error was introduced in commit v3.1.0-rc1~688^2~5 (cmTarget: Allow any generator expression in SOURCES property., 2014-03-18) and fixed in commit v3.1.0-rc1~561^2~1 (cmTarget: Fix listing of source files at configure-time., 2014-04-13). All commits which fail the test case in the testable way do so when such a cached version of the source files is found and returned at generate time. In the test case, the cached content is populated at configure-time through the use of the deprecated LOCATION property with CMP0026 OLD. The cached content is an empty container for the bar target in the test case, because its source file 'foo.cpp.o' is not known until generate-time. That means that no source files are available to compute the link language and the reported error is issued. The actual problem is that the SourceFilesMap should be cleared after configure time by cmTarget::ClearLinkMaps. Clear it there now.
* | Merge topic 'join-algorithm'Brad King2015-01-121-28/+3
|\ \ | | | | | | | | | | | | | | | | | | 55a73e6b Use the cmJoin algorithm where possible. 8dc8d756 cmStandardIncludes: Add a join algorithm for string containers. b5813cee cmInstallCommand: Remove unused variable.
| * | Use the cmJoin algorithm where possible.Stephen Kelly2015-01-081-28/+3
| | |
* | | Merge topic 'drop-ancient-workarounds'Brad King2015-01-121-38/+38
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | Port all cmOStringStream to std::ostringstream.Stephen Kelly2015-01-111-38/+38
| |/ / | | | | | | | | | All compilers hosting CMake support the std class.
* | | cmTarget: Use insert instead of std::copy.Stephen Kelly2015-01-111-2/+2
| | | | | | | | | | | | | | | insert can reserve() memory in the container, and this is more-consistent with the rest of CMake now.
* | | Use two-iterator std::set::insert where appropriate.Stephen Kelly2015-01-111-16/+4
| | |
* | | Use insert instead of a loop in some cases.Stephen Kelly2015-01-111-5/+2
|/ / | | | | | | | | | | Limit this change to inserting into a vector from a vector. A follow up change can use insert for inserting into a set.
* | Merge topic 'osx-cfbundle-tweaks'Brad King2014-12-191-9/+2
|\ \ | | | | | | | | | | | | | | | | | | b189c599 Tests: Run CFBundleTest only with valid configuration 3a605693 Xcode: Call IsCFBundleOnApple to decide if bundle is being built 207b7af0 cmTarget: Use GetCFBundleDirectory within GetFullNameInternal
| * | cmTarget: Use GetCFBundleDirectory within GetFullNameInternalGregor Jasny2014-12-171-9/+2
| | | | | | | | | | | | | | | | | | Replace duplicated code by call to GetCFBundleDirectory. Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
* | | Add 'ANDROID_API_MIN' target property to set Android Target MIN APIDmitry Polyanitsa2014-12-171-0/+1
|/ / | | | | | | | | | | Also add a 'CMAKE_ANDROID_API_MIN' variable to set the property default. Teach the VS generator to write the MIN API value into Nsight Tegra project files.
* | Fix some Clang -Wstring-conversion warningsSean McBride2014-12-121-6/+6
| | | | | | | | | | Some false positives, but some flagged faulty asserts where the ! was inside the string instead of outside.
* | Merge topic 'target-sources-error-conditions'Brad King2014-12-011-3/+23
|\ \ | |/ | | | | | | | | | | 8a75c7ef Help: Document the export limitation of INTERFACE_SOURCES. e1348056 Export: Disallow export of targets with INTERFACE_SOURCES bb5905bb cmTarget: Don't allow relative paths in INTERFACE_SOURCES
| * cmTarget: Don't allow relative paths in INTERFACE_SOURCESStephen Kelly2014-11-291-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow the pattern of checks that are made for INTERFACE_INCLUDE_DIRECTORIES. Existence is already checked by cmSourceFile::GetFullPath. Add a check to disallow relative paths in source directories. Otherwise code such as target_sources(lib1 INTERFACE foo.cpp) would fail if consumed by a target in a different directory. Unlike the INTERFACE_INCLUDE_DIRECTORIES behavior, we don't care whether the entry comes from an IMPORTED target or not. In the include directories case, the directory for a non-imported target might not exist yet but might be created. In the sources case, a file which does not yet exist in the filesystem must be explicitly marked with the GENERATED property. Adjust existing tests and add a new test for the error.
* | Merge topic 'remove-ancient-msvc-workarounds'Brad King2014-11-251-12/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 12cb0b86 Help: Update developer manual with some C++ features now permitted. ba74465f cmGeneratorTarget: Remove MSVC7 workaround 41363c0c VisualStudio: Remove MSVC6 compatibility macro. 4efcfe52 cmSystemTools: Remove MSVC6 compatibility define. 5f4695cd cmStandardIncludes: Remove MSVC6 condition for cmArrayBegin macro. 7a064337 cmFindCommon: Remove MSVC6 workaround for nested struct private access. fdb73547 cmTarget: Remove std::min and std::max MSVC6 compatibility code.
| * | cmTarget: Remove std::min and std::max MSVC6 compatibility code.Stephen Kelly2014-11-201-12/+2
| | | | | | | | | | | | CMake is no longer required to build with MSVC6.
* | | Merge topic 'remove-c_str'Brad King2014-11-251-1/+1
|\ \ \ | | | | | | | | | | | | | | | | 5eb4d759 Remove some unneeded c_str calls.
| * | | Remove some unneeded c_str calls.Stephen Kelly2014-11-231-1/+1
| |/ /
* | | cmTarget: Use null_ptr code path on all platformsBrad King2014-11-201-19/+2
|/ / | | | | | | | | This reduces conversions asked of the compiler. Also drop 'static' from the declaration of the local null_ptr helper.
* | strings: Remove redundant calls to std::string::c_str()Nils Gladitz2014-10-151-4/+4
|/ | | | | Replacements were detected and performed by the clang tool remove-cstr-calls on a linux build.
* Merge topic 'vs-nsight-tegra-generator'Brad King2014-09-301-2/+21
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | df84281d Help: Add notes for topic 'vs-nsight-tegra-generator' 69e198dc VS: Generate Nsight Tegra project revision number 5365c9ac VS: Map Nsight Tegra file types in .vcxproj files 178f56a5 VS: Fix Tegra-Android platform linking of libraries by name 7115702f Tests: Add test for VS Nsight Tegra generator support a6289499 VS: Generate ANDROID_GUI executables as app packages c12e4699 Add 'ANDROID_API' target property to set Android Target API 9a4df52a Add 'ANDROID_GUI' target property to mark Android applications 16569abf cmTarget: Track internally whether platform is Android ef0fd4f0 VS: Teach vcxproj generation about the Tegra-Android platform d09b60f5 VS: Detect compiler id of Nsight Tegra-Android toolchains 2f071466 VS: Teach VS >= 10 to recognize CMAKE_SYSTEM_NAME 'Android'
| * Add 'ANDROID_API' target property to set Android Target APIBrad King2014-09-301-0/+1
| | | | | | | | Also add a 'CMAKE_ANDROID_API' variable to set the property default.
| * Add 'ANDROID_GUI' target property to mark Android applicationsBrad King2014-09-291-2/+14
| | | | | | | | | | | | | | Also add a 'CMAKE_ANDROID_GUI' variable to set the property default so a project can easily make all executables Android applications. An Android application executable file has the same extension as a shared library (.so).
| * cmTarget: Track internally whether platform is AndroidBrad King2014-09-291-0/+6
| | | | | | | | Add an IsAndroid member to save whether CMAKE_SYSTEM_NAME is "Android".
* | Remove extra slashes from LOCATION target property valueBrad King2014-09-221-5/+0
|/ | | | | | | | In commit v3.0.0-rc1~429^2~2 (Remove the Location member from cmTarget, 2012-10-07) a few extra slashes were added to the path construction logic, perhaps due to a partially implemented attempt at handling the case that GetDirectory returns an empty string. This leads to LOCATION paths with double slashes in some cases. Remove them now.
* cmTarget: Do not mistake a preceding error for a CMP0049 failureBrad King2014-07-301-5/+7
| | | | | | | | | After calls to ProcessSourceItemCMP0049, check for an empty return string to detect a failure instead of trusting GetErrorOccuredFlag. The latter could have been left from a preceding non-fatal error. Extend the RunCMake.Configure test to cover a case that exposed this problem.
* cmTarget: Avoid re-computing head-independent link interfacesBrad King2014-07-211-7/+53
|
* cmTarget: Move ComputeLinkImplementation* to internalsBrad King2014-07-211-30/+46
| | | | | There are no external callers, and this will allow the methods to see the full OptionalLinkImplementation internal structure.
* cmTarget: Re-order link interface map lookup logicBrad King2014-07-211-16/+15
| | | | | | | | | In GetLinkInterface, GetLinkInterfaceLibraries, and GetImportLinkInterface, lookup the HeadToLinkInterfaceMap for the current configuration first, and then index it by head target. In GetLinkImplementationLibrariesInternal, lookup the HeadToLinkImplementationMap for the current configuration first, and then index it by head target.
* cmTarget: Refactor link interface map storageBrad King2014-07-211-18/+17
| | | | | Convert LinkInterfaceMapType and LinkImplMapType to nested maps that index on configuration first and 'head' target second.
* cmTarget: Remove duplicate link interface mapBrad King2014-07-211-10/+3
| | | | | No target is both imported and not imported so we do not need separate link interface maps for them.
* cmTarget: Drop internal cache of build propertiesBrad King2014-07-211-91/+43
| | | | | | | | | These use a huge amount of memory that accumulates as generation proceeds. On the Unix Makefiles generator, only GetIncludeDirectories and GetCompileDefinitions are even called more than once per target (once for build files, once for dependency scanning preprocessor info). Another approach will be needed to avoid duplicate computation in the cases where it does occur.
* cmTarget: Drop internal cache of link interface usage requirementsBrad King2014-07-211-163/+83
| | | | | | | | | These use a huge amount of memory that accumulates as generation proceeds. On the Unix Makefiles generator, only GetIncludeDirectories and GetCompileDefinitions are even called more than once per target (once for build files, once for dependency scanning preprocessor info). Another approach will be needed to avoid duplicate computation in the cases where it does occur.
* Merge topic 'dev/target-fastpaths'Brad King2014-07-181-330/+337
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | a9c9b66c cmTarget: use a hash_map for cmTargets typedef bcb6dbc1 cmTarget: help the optimizer a bit 679f3dee cmTarget: use hash_set for sets of strings 23d6520d cmTarget: Allow caching of empty genex expansions cd54f1db cmTarget: Only copy GenEx expansions when necessary b75fc0e1 cmTarget: Don't set properties on custom targets 66076915 cmTarget: Use static strings for special property names cebefa71 cmTarget: Sort special property checks 97ce676e cmTarget: Fast path for regular properties 4cfa918a cmTarget: Factor out common code 85242b7d cmTarget: Use else/if trees rather than an if tree
| * cmTarget: help the optimizer a bitBen Boeckel2014-07-171-3/+3
| |
| * cmTarget: use hash_set for sets of stringsBen Boeckel2014-07-171-37/+42
| |
| * cmTarget: Allow caching of empty genex expansionsBen Boeckel2014-07-171-2/+4
| |
| * cmTarget: Only copy GenEx expansions when necessaryBen Boeckel2014-07-171-10/+13
| |
| * cmTarget: Don't set properties on custom targetsBen Boeckel2014-07-171-37/+43
| | | | | | | | Properties are not required on custom targets.
| * cmTarget: Use static strings for special property namesBen Boeckel2014-07-171-36/+55
| | | | | | | | | | The function is called enough that the std::string/cstr comparisons are expensive from the strlen. Cache the strings for faster comparisons.
| * cmTarget: Sort special property checksBen Boeckel2014-07-171-27/+27
| | | | | | | | | | | | The LINK_LIBRARIES property is by *far* the most popular. Move it to the top. TYPE is second, but with more generator expression usage, that may change in the future.
| * cmTarget: Fast path for regular propertiesBen Boeckel2014-07-171-141/+157
| |
| * cmTarget: Factor out common codeBen Boeckel2014-07-161-52/+20
| |
| * cmTarget: Use else/if trees rather than an if treeBen Boeckel2014-07-161-50/+38
| | | | | | | | Skips lots of unnecessary string comparisons.