summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* Ninja: Generate rules only for languages compiled in a target (#15325)Brad King2014-12-231-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | Refactoring in commit v3.1.0-rc1~688^2~2 (cmTarget: Compute languages from object libraries on demand, 2014-03-18) taught cmTarget::GetLanguages to (correctly) include the languages of object library sources. Previously this was done only in cmTarget::ComputeLinkImplementationLanguages to choose the linker language. The Ninja generator writes out generic build rules for each language compiled within a target using the rule variables defined in the directory of the target. This only needs to be done for languages actually compiled within the current target. Switch from using the cmTarget::GetLanguages method to get the list of languages over to using cmTarget::GetSourceFiles directly so we do not get the languages in object libraries. Strictly speaking this should make no difference because it is not safe to use objects from a language not enabled in the directory containing a target or else the link information for the language may not be considered. However, in cases when no link information happens to be needed for a language it was possible in CMake 3.0 and below to enable a language only in a subdirectory providing an object library, and then use the objects from a containing directory. The above change teaches the Ninja generator to continue working in this case.
* Ninja: Do not crash when CMAKE_<LANG>_COMPILE_OBJECT is empty (#15325)Brad King2014-12-221-1/+4
|
* CMake 3.1.0v3.1.0Brad King2014-12-151-1/+1
|
* CMake 3.1.0-rc3v3.1.0-rc3Brad King2014-12-081-1/+1
|
* Merge branch 'vs-phone-store-deployment-location' into releaseBrad King2014-12-031-0/+15
|\
| * VS: Add source file property to specify Windows App deployment locationGilles Khouzam2014-12-031-0/+15
| | | | | | | | | | | | | | | | | | | | Add a VS_DEPLOYMENT_LOCATION source file property to specify where to put files that are part of the package. For example: set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_LOCATION "assets") Without this, sources marked with VS_DEPLOYMENT_CONTENT cannot be located properly.
* | Merge branch 'vs-hlsl-settings' into releaseBrad King2014-12-031-1/+26
|\ \ | |/
| * VS: Add source file properties to set the hlsl shader entry point and modelCedric Perthuis2014-12-031-1/+26
| | | | | | | | | | | | Create properties VS_SHADER_ENTRYPOINT and VS_SHADER_MODEL. Without these many .hlsl source files may not be possible to use. Extend the VSWinStorePhone test project to cover them.
* | Merge branch 'fix-wince-unicode-entry-point' into releaseBrad King2014-12-031-2/+16
|\ \
| * | VS, WINCE: Fix entry point for Unicode buildsPascal Bach2014-12-031-2/+16
| |/ | | | | | | | | | | | | | | | | When _UNICODE is defined VS uses wmain instead of main as the entry function. To make this correctly work on WindowsCE EntryPointSymbol needs to be set to mainWCRTStartup instead of mainACRTStartup for console applications and to wWinMainCRTStartup instead of WinMainCRTStartup for GUI applications. Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
* | Merge branch 'link-no-empty-response-files' into releaseBrad King2014-12-011-1/+1
|\ \
| * | Makefile: Do not create an empty linker response fileBrad King2014-12-011-1/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.1.0-rc1~821^2 (Windows: Use response files to specify link libraries for GNU tools, 2014-03-04) we use a response file to pass possibly long linker flag lists to the GNU linker on Windows. On MinGW, this may cause gfortran to use a response file to pass some flags to its own internal invocation. This is okay except when we are parsing implicit link flags from the compiler ABI detection build. If gfortran uses a response file in that case then we may miss extracting some of the implicit link flags, such as -lgfortran. Fortunately, in the compiler ABI detection case we do not actually link to anything so the response file is empty. Work around this problem by simply not using a response file when the list of flags it is used to pass is empty (or just whitespace). Reported-by: Bill Somerville <bill@classdesign.com>
* | Merge branch 'target-sources-error-conditions' into releaseBrad King2014-12-013-3/+44
|\ \
| * | Export: Disallow export of targets with INTERFACE_SOURCESStephen Kelly2014-11-292-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This can be allowed in the next release, but it needs to have some features present and tested such as * Ensuring that relative paths do not appear in the generated property. * Ensuring that paths to the source or build directories do not appear. * Generating a check in the file for CMake 3.1 or later so that the resulting property will be consumed. * Ensuring that any referenced targets are part of an export set and generating a check for them. * INSTALL_INTERFACE and BUILD_INTERFACE content. All of these checks are already done for INTERFACE_INCLUDE_DIRECTORIES, but it is too late to add them for INTERFACE_SOURCES for CMake 3.1. As the checks introduce some new error conditions, it is better to disallow exporting fully for this case and introduce proper error conditions later instead of policies.
| * | 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 branch 'fix-transitive-OBJECT_SOURCES-context' into releaseBrad King2014-12-011-34/+40
|\ \ \
| * | | Genex: Fix evaluation context propagation for TARGET_OBJECTS.Stephen Kelly2014-11-261-34/+40
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extract a new method to encapsulate the requirements of evaluating dependent-expressions, namely, propagation of the EvaluateForBuildsystem setting, which is missing from the getLinkedTargetsContent implementation. Commit v3.1.0-rc1~688^2 (Genex: Only evaluate TARGET_OBJECTS to determine target sources., 2014-03-20) introduced an error case for use of TARGET_OBJECTS outside of the context of generating the buildsystem, as the path to object files may be dependent on buildsystem variables (See bug #15226). Commit v3.1.0-rc1~314^2 (Allow INTERFACE_SOURCES to specify $<TARGET_OBJECTS> (#14970), 2014-07-09) made it possible to propagate such content to dependent targets. While that commit propagated the EvaluateForBuildsystem setting for the case of a TARGET_PROPERTY expression, as generated for direct dependencies of a target in cmTargetInternals::AddInterfaceEntries, it did not add propagation for content from further transitive target dependencies, as determined by getLinkedTargetsContent.
* | | Merge branch 'fix-source-case-matching' into releaseBrad King2014-11-261-1/+2
|\ \ \
| * | | Fix lookup of source names after conversion to their actual case (#15259)Brad King2014-11-261-1/+2
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.1.0-rc1~688^2~15 (cmTarget: Add a method to obtain list of filenames for sources, 2014-03-17) we have code paths that lookup sources by strings containing their own full path after normalization to the actual case on disk. This fails in the case that a cmSourceFile has already been created with a different case in the filename. The comparison of the directory works because it is always normalized. Only the comparison of the file name fails. Fix this by using a case-insensitive comparison of source file names on platforms that do not have case-sensitive filesystems.
* | | Revert "ClearMatches: Only clear matches which were actually set" (#15261)Ben Boeckel2014-11-265-60/+43
|/ / | | | | | | | | | | | | | | | | | | | | This reverts commit v3.1.0-rc1~557^2~2 (ClearMatches: Only clear matches which were actually set, 2014-03-12). The optimization did not track the match count in the same scope as the variables, allowing possible inconsistency. Resolve conflicts in Source/cmIfCommand.cxx, Source/cmMakefile.cxx, and Source/cmMakefile.h by moving the changes to the new location of the code involved.
* | Merge branch 'vs-check-phone-store-tools' into releaseBrad King2014-11-177-35/+242
|\ \
| * | VS: Do not produce WinMD file for OBJECT libraries (#15228)Gilles Khouzam2014-11-171-1/+2
| | | | | | | | | | | | | | | They are implemented as static libraries for the IDE so treat them the same.
| * | VS: Improve error messages when compiler is not detected (#15228)Gilles Khouzam2014-11-146-34/+240
| | | | | | | | | | | | | | | | | | | | | | | | CMake requires both the Desktop SDK and the correct platform SDK (Windows Phone or Windows Store) to be installed when targeting the Windows mobile platforms. Verify that the right platform components are installed and give a more detailed error message when something is wrong.
* | | Merge branch 'vs14-is-2015' into releaseBrad King2014-11-172-11/+31
|\ \ \
| * | | VS: Rename VS 14 generator to 'Visual Studio 14 2015'Brad King2014-11-142-11/+31
| | |/ | |/| | | | | | | | | | | | | Now that we know the year component of this VS version we can add it to the generator name. For convenience, map the name without the year to the name with the year.
* | | Merge branch 'kwsys-SharedForward-vs14' into releaseBrad King2014-11-171-1/+1
|\ \ \
| * | | KWSys SharedForward: Hard-code the ldpath buffer size to below VS 14 limitBrad King2014-11-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Visual Studio 14 (2015) complains if a static character array is declared with more than 65535 elements. This limit should be large enough for SharedForward clients, so just hard-code that instead of trying to compute a limit.
* | | | Merge branch 'vs-nsight-tegra-version' into releaseBrad King2014-11-131-2/+2
|\ \ \ \
| * | | | VS: Change Nsight Tegra 2.0 Project Revision Number from 8 to 9Dmitry Polyanitsa2014-11-131-2/+2
| | |_|/ | |/| | | | | | | | | | | | | | A hotfix to Nsight Tegra 2.0 needed to increase the project number. Teach CMake to generate the newer number for this version.
* | | | Merge branch 'no-cmake-self-install-when-cross-compiling' into releaseBrad King2014-11-131-1/+2
|\ \ \ \ | |_|_|/ |/| | |
| * | | Do not use just-built CMake to install itself when cross-compiling (#15248)Brad King2014-11-131-1/+2
| |/ / | | | | | | | | | | | | | | | The special case added by commit v2.4.0~3051 (When building CMake itself, use the new cmake to install so that the current cmake can be overwritten, 2004-06-09) does not make sense when cross-compiling.
* | | CMake 3.1.0-rc2v3.1.0-rc2Brad King2014-11-121-1/+1
| | |
* | | Merge branch 'kwsys-SystemInformation-AIX-_SC_AIX_REALMEM' into releaseBrad King2014-11-121-1/+1
|\ \ \ | | |/ | |/|
| * | KWSys SystemInformation: Check for _SC_AIX_REALMEM before using itÅdne Hovda2014-11-111-1/+1
| | | | | | | | | | | | | | | Add a check for supported flag when querying for system memory on AIX 5.1.
* | | Merge branch 'fix_link-line-dedup_regression' into releaseBrad King2014-11-111-4/+9
|\ \ \
| * | | Fix link line order when shared libraries are de-duplicatedDaniele E. Domenichelli2014-11-101-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v3.1.0-rc1~227^2~1 (De-duplicate shared library targets in generated link lines, 2014-07-30) we de-duplicate shared library targets on the link line. However, some toolchains will fail linking if an executable is linking to a shared library that is not used directly and a static library that depends on the shared one. The linker may not keep the reference to the shared library the first time and then the symbols needed by the static library may not be found. Fix this by reversing the direction of the for loop that removes the duplicate shared libraries, in order to ensure that the last occurrence of the library is left instead of the first one. Extend Tests/Dependency with a case covering this behavior. Create an executable that links to a shared library and a static library but only needs the shared library as a dependency of the static library. Co-Author: Brad King <brad.king@kitware.com>
* | | | genex: Preserve order while evaluating TARGET_OBJECTSClinton Stimpson2014-11-071-4/+8
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The logic introduced in commit v3.1.0-rc1~688^2~9 (Genex: Evaluate TARGET_OBJECTS as a normal expression, 2014-02-26) ordered a map by pointer value and then constructed a list of object files by iterating over the map. This is not deterministic. Since commit v3.1.0-rc1~688^2~5 (cmTarget: Allow any generator expression in SOURCES property, 2014-03-18) the order produced by the above-mentioned logic started being used for the actual list of object files on the link line. Since it is not deterministic, spurious re-links occur after re-running CMake simply because the order of objects changed on the link line. Fix this by iterating over the original vector of source files instead of the map. This has a deterministic order.
* | | Merge branch 'fix-configure_file-COPYONLY' into releaseBrad King2014-11-031-1/+1
|\ \ \ | |/ / |/| |
| * | KWSys: Fix configure_file call to use COPYONLY, not COPY_ONLYBrad King2014-10-311-1/+1
| |/
* | Merge branch 'revert-definition-map-lookup' into releasev3.1.0-rc1Brad King2014-10-243-24/+10
|\ \
| * | Revert "cmDefinitions: Don't store parent lookups"Ben Boeckel2014-10-243-24/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 5abfde6cb8a1ae0b2825797eab6c2e9842eb7c49. The behaviors associated with implicit pulldown on variable lookup seriously conflict with the optimizations made in these commits. Basically, since values were copied upon variable lookup, not just on PARENT_SCOPE, coupled with PARENT_SCOPE's behavior based on whether the variable is in the current scope or not causes serious problems with not storing a value for every variable at every scope. The commit changed behavior of the following example, among other cases: function(test_set) set(blah "value2") message("before PARENT_SCOPE blah=${blah}") set(blah ${blah} PARENT_SCOPE) message("after PARENT_SCOPE blah=${blah}") endfunction() set(blah value1) test_set() message("in parent scope, blah=${blah}") Reported-by: Alex Merry <alex.merry@kde.org> Reported-by: Ben Cooksley <bcooksley@kde.org>
* | | CMake 3.1.0-rc1 version updateBrad King2014-10-141-3/+3
| | |
* | | Merge topic 'fix-comment-typos'Brad King2014-10-1415-20/+20
|\ \ \ | |_|/ |/| | | | | | | | bef23e81 Fix some spelling errors in comments
| * | Fix some spelling errors in commentsGeoff Viola2014-10-1315-20/+20
| | |
* | | CMake Nightly Date StampKitware Robot2014-10-141-1/+1
| | |
* | | Merge topic 'fix-ninja-rc-include-flags'Brad King2014-10-135-8/+15
|\ \ \ | | | | | | | | | | | | | | | | f4c5eade Ninja: Fix RC include directories regression
| * | | Ninja: Fix RC include directories regressionBrad King2014-10-135-8/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes in commit b9aa5041 (cmLocalGenerator: Simplify GetIncludeFlags output formatting, 2014-03-04) caused Windows Resource Compiler include directories to be computed as relative paths in the Ninja generator. This breaks the cmcldeps handling of include paths. The reason for the regression is that several cmLocalGenerator::GetIncludeFlags callers treated the fourth "bool forResponseFile" argument as if it controlled whether include directories were a full path. It actually did control that by accident until the above commit. Add an explicit "bool forceFullPaths" argument to GetIncludeFlags and thread the value through ConvertToIncludeReference as needed. Update GetIncludeFlags call sites that really wanted to control the forResponseFile setting to be aware of the new argument. Extend the VSResource test to cover this case.
* | | | CMake Nightly Date StampKitware Robot2014-10-131-1/+1
| | | |
* | | | CMake Nightly Date StampKitware Robot2014-10-121-1/+1
| | | |
* | | | CMake Nightly Date StampKitware Robot2014-10-111-1/+1
| | | |