summaryrefslogtreecommitdiffstats
path: root/Source/cmTarget.cxx
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* | cmTarget: Cache compatible interface property setsBrad King2014-07-161-48/+45
| | | | | | | | | | | | | | Replace isLinkDependentProperty with a CompatibleInterfaces structure that records all the compatible interface properties in a set for each type. This avoids repeatedly traversing the link implementation closure and asking every target for its compatible interface properties.
* | cmTarget: Refactor GetLinkImplementationClosure internalsBrad King2014-07-161-7/+11
| | | | | | | | | | Store the 'Done' flag directly in each map entry instead of using a separate map.
* | cmTarget: Drop GetTransitivePropertyTargets methodBrad King2014-07-161-19/+0
| | | | | | | | Inline the implementation at the only remaining call site.
* | cmTarget: Make GetLink*Libraries methods safer to useBrad King2014-07-161-15/+16
| | | | | | | | | | | | | | | | Split the library lists out of LinkImplementation and LinkInterface into LinkImplementationLibraries and LinkInterfaceLibraries parent classes, respectively. Return these from GetLinkImplementationLibraries and GetLinkInterfaceLibraries, respectively, so that callers cannot access parts of the structures that have not been populated.
* | Honor $<LINK_ONLY> when checking interface propertiesBrad King2014-07-161-1/+1
| | | | | | | | | | | | | | | | | | | | Callers of cmTarget::GetLinkImplementationClosure are interested in the set of targets whose interface properties propagate to the current target. This excludes targets guarded by $<LINK_ONLY>. Teach the CompatibleInterface test to cover suppression of interface compatibility tests with $<LINK_ONLY>. Although this is not recommended in practice, it is a way of covering the above behavior.
* | Make $<LINK_ONLY> available to projects (#14751)Brad King2014-07-161-11/+3
|/ | | | | | | | Previously this generator expression was used internally by the target_link_libraries command to honor private linking requirements of static libraries in their INTERFACE_LINK_LIBRARIES. Remove the check that limits $<LINK_ONLY> to this use case to make it available for project code to use too.
* Merge topic 'refactor-link-internals'Brad King2014-07-161-114/+93
|\ | | | | | | | | | | | | | | | | | | | | | | 1ca0c0e9 cmTarget: Refactor internal imported LinkInterface map 102eea60 cmTarget: Simplify internal ComputeLinkInterfaceLibraries method b0f57408 cmTarget: Move ComputeLinkInterfaceLibraries to internals c69e8a55 cmTarget: Refactor internal LinkInterface map 4db3990e cmTarget: Drop 'head' argument from processSources 4b8130b8 cmTarget: Drop 'head' argument from GetSourceFiles 4c763dd1 cmTarget: Drop 'head' argument from GetLanguages 190cabe7 cmTarget: Drop 'head' argument from ComputeLinkImplementationLanguages
| * cmTarget: Refactor internal imported LinkInterface mapBrad King2014-07-141-10/+5
| | | | | | | | | | | | Create the map entry up front and store in it a boolean value indicating whether the LinkInterface structure has been populated. This approach leads to shorter code that is easier to follow too.
| * cmTarget: Simplify internal ComputeLinkInterfaceLibraries methodBrad King2014-07-141-26/+18
| | | | | | | | | | Now that the method can see the full OptionalLinkInterface structure, store information there instead of passing it through arguments.
| * cmTarget: Move ComputeLinkInterfaceLibraries to internalsBrad King2014-07-141-43/+52
| | | | | | | | | | There are no external callers, and this will allow the method to see the full OptionalLinkInterface internal structure.
| * cmTarget: Refactor internal LinkInterface mapBrad King2014-07-141-28/+18
| | | | | | | | | | | | Create the map entry up front and store in it boolean values indicating which pieces of the LinkInterface structure have been populated. This approach leads to shorter code that is easier to follow too.
| * cmTarget: Drop 'head' argument from processSourcesBrad King2014-07-141-4/+1
| | | | | | | | No call sites need it to be anything but 'this'.
| * cmTarget: Drop 'head' argument from GetSourceFilesBrad King2014-07-141-11/+9
| | | | | | | | No call sites need it to be anything but 'this'.
| * cmTarget: Drop 'head' argument from GetLanguagesBrad King2014-07-141-5/+4
| | | | | | | | No call sites need it to be anything but 'this'.
| * cmTarget: Drop 'head' argument from ComputeLinkImplementationLanguagesBrad King2014-07-141-4/+3
| | | | | | | | No call sites need it to be anything but 'this'.
* | cmTarget: Compile old-style link dependencies only for VS 6Brad King2014-07-141-0/+8
| | | | | | | | | | Compile all the "ForVS6" cmTarget members only on Windows. No other platforms support the VS 6 generator.