When more than one value is given to the NAMES option this command by
default will consider one name at a time and search every directory for
it. Add a NAMES_PER_DIR option to tell this command to consider one
directory at a time and search for all names in it.
Avoid using KWSys SystemTools::FindProgram because it does much more
than we actually need for find_program and does not allow us to control
the order of preference between directories and names. Create our own
cmFindProgramHelper much like cmFindLibraryHelper but without all the
find_library-specific parts.
In FindNormalLibraryDirsPerName we consider one name at a time and
search the entire path. Avoid repeated consideration of names by
removing each one from the list of candidates before considering the
next one. This will not change behavior because we already know the
earlier candidates were not found on repeated considering anyway.
Determine the Desktop SDK for Windows Phone and Windows Store from the
generator instead of the version of the targeted app. This allows to
build a Windows Phone 8.1 app on VS 2015 for example.
ad262917 Xcode: Add unit test for iOS project install (#12506)
48fe617e Fix installation of iOS targets (#12506)
d2c2319d Replace CMAKE_XCODE_EFFECTIVE_PLATFORMS with call to PlatformIsAppleIos
Instead of searching for source files in a couple hard-coded
locations, we now search the source and binary directory for files
matching both the name of the covered file and its package
directory structure.
The call to CreateFile added by commit ac0bb433 (VS: Windows Store/Phone
package cert thumbprint, 2015-08-21) passes a wide character path
explicitly so we should call CreateFileW directly. Otherwise it does
not build without -DUNICODE (e.g. in bootstrap on MSYS).
The changes to cmComputeLinkInformation.cxx in commit 675ef165 (Allow
LINK_SEARCH_{START,END}_STATIC props to have default values, 2015-08-07)
are unrelated to the feature added by that change and are incorrect.
They lead to cases of extra -Bdynamic flags. Revert them.
616d8f02 cmGeneratorTarget: Rename method to match operation.
ec56d244 cmGlobalGenerator: Process evaluation files after target depends.
1e5349a5 cmGlobalGenerator: Access makefile from makefiles container.
2b9a25d7 cmGlobalGenerator: Create global targets directly after Configure.
3e08b4df cmMakefile: Skip Global targets for CMP0019 evaluation.
357bf469 cmGlobalGenerator: Fill the project map at compute time.
ebf8d0a9 cmGlobalGenerator: Rename method.
bd096d30 cmGlobalGenerator: Avoid cmLocalGenerator until after Configure.
ff8ac8ee cmLocalGenerator: Create from already-constructed cmMakefile.
0bd7279f Ninja: Remove some incorrect comments adding no value.
2f2d4da9 cmCTestScriptHandler: Simplify deletes.
7fdc9a8b QtAutogen: Use a smart pointer.
92041eec cmGlobalGenerator: Remove MakeLocalGenerator method.
acb00622 cmGlobalGenerator: Require a snapshot to create a local generator.
83b8a927 cmMakefile: Remove cmLocalGenerator member.
9b6a743b cmLocalGenerator: Remove Parent pointer.
Teach cmSystemTools::MakefileColorEcho to use the color printing API
only when we actually have a color to print. This avoids printing
escape sequences that do not change the text attributes.
Since commit v3.3.0-rc1~480^2~4 (Makefile: Fix output during parallel
builds, 2015-02-05) we always use this code path to print progress and
rule messages even when color is disabled (e.g. in a try_compile). It
is important to avoid printing escapes when there is no color because on
MSYS we have no isatty and so assume that vt100 escapes are supported,
but we do not want to print them when capturing try_compile output.
If we capture the vt100 escapes in try_compile output, they contain
unbalanced square brackets. This causes CMakeParseImplicitLinkInfo
to fail to separate lines in a ;-list and therefore fail to extract
information from the link line. Then mixed-language linking breaks.
Remove use of cmXMLSafe from CTest when generating content that is later
handled by cmXMLWriter. This was broken by refactoring in the topic
merged by commit v3.3.0-rc1~22 (Merge topic 'ctest-xml-refactor',
2015-05-28).
637c56b4 cmGlobalGenerator: Implement FillProjectMap in terms of cmState.
b3f2299e cmState: Move ProjectName from cmMakefile.
6ce940ac cmMakefile: Use std::string in ProjectName API.
e8c0341d cmMakefile: Out-of-line GetProjectName.
867b5be8 cmLocalGenerator: Remove unused Children member.
6c832219 cmLocalGenerator: Implement child traversal in terms of cmState.
3fcf3837 Makefiles: Remove valueless cast.
223f4a66 cmLocalGenerator: Simplify condition.
ae026f54 cmState: Store Children states in parent state.
7fbc56ac cmGlobalUnixMakefileGenerator3: Implement progress in terms of cmState.
65c434e1 cmGlobalUnixMakefileGenerator3: Inline an IsExcluded call.
be56feb6 cmGlobalGenerator: Extract new IsExcluded overload.
45f52003 cmGlobalGenerator: Implement IsExcluded in terms of cmState::Snapshot.
af9fc277 cmState: Make Snapshot EqualityComparable.
9b44018d cmGlobalGenerator: Convert IsExcluded to loop.
5f05b562 cmGlobalGenerator: Refactor IsExcluded.
95925a60 cmGlobalGenerator: Don't use else after return.
Since cmTarget::ComputeOutputDir results can be used in CMake code of script
cmake_install.cmake and in Xcode internals, string ${EFFECTIVE_PLATFORM_NAME}
should be used instead of $(EFFECTIVE_PLATFORM_NAME) because it works for both.
Value of CMAKE_CFG_INTDIR can't be used in BUILD_TYPE argument of install
command since it contains $(EFFECTIVE_PLATFORM_NAME) (e.g. equals to
`Release-iphoneos`, `Debug-iphoneos`, etc.).
Currently the CMAKE_XCODE_EFFECTIVE_PLATFORMS property acts only as
a kind of toggle switch to enable iOS project layout features.
But instead of relying on this undocumented property, better detect
the presence of an iOS SDK directly.
04e708d8 Remove use of include <cmsys/IOStream.hxx> from KWSys
e8585f45 Remove use of include <cmsys/stl/*> and cmsys_stl::*
6db713c0 Remove use of include <cmsys/ios/*> and cmsys_ios::*
3fa1b964 cmGlobalUnixMakefileGenerator3: Change the progress container key.
55e39276 cmState: Make it possible to order cmState::Snapshot.
04168cbb cmGlobalUnixMakefileGenerator3: Rename member.
2394584c cmGlobalGenerator: Rename progress initializer method.
b9eb3cd1 cmGlobalGenerator: Move LG to target map to subclass.
f5d2b7a6 cmGlobalGenerator: Remove clearance of map.
heaptrack showed a 1 byte allocation with the backtrace pointing
here, as is the case since commit v3.3.0-rc1~112^2~5 (cmPolicies:
Remove unused cmPolicy class., 2015-05-03)
Store the definitions in a cmLinkedTree in the cmMakefile. This can
be moved to cmState and then the tree will provide snapshotting
possibilities. It will also make the Closure copy created at
the start of each cmMakefile unnecesarry.
Refactoring in commit 6ed9c7e0 (cmState: Host buildsystem properties for
directories, 2015-07-18) broke include_directories(BEFORE). Fix it and
add a test case.
Since support for generator expressions was added to OUTPUT_NAME it is
possible for project code to cause recursion in this method by using a
$<TARGET_FILE> genex. Detect and reject such cases.
CMAKE_<LANG>_OUTPUT_EXTENSION tells us the proper extension for the
current toolchain. Teach the ComputeObjectFilenames method to use
GetLanguageOutputExtension to look up the extension instead of
hard-coding ".obj". This is already done in the code path for explicit
file names inside our call to GetObjectFileNameWithoutTarget.
In the get_filename_component command, add a new BASE_DIR parameter to
use with the ABSOLUTE and REALPATH options. This will be used when
finding an absolute path from a relative path.
4071a747 curl: Update README-CMake.txt for new snapshot
7727d485 curl: Update configuration of build within CMake
3f2f1a94 curl: Fix check for gethostbyname_r with 5 arguments
91e8d35a Merge branch 'curl-upstream' into update-curl
602cdc06 cmCurl: Tolerate lack of CURLOPT_CAPATH support
70654261 curl 7.44.0 (reduced)
Use the CMAKE_LINK_SEARCH_START_STATIC and CMAKE_LINK_SEARCH_END_STATIC
variables to initialize the LINK_SEARCH_START_STATIC and
LINK_SEARCH_END_STATIC target properties respectively.
The change in commit 27252b24 (cmComputeLinkInformation: Simplify
generator object access, 2015-08-02) broke the conditional use of a
target introduced in commit 41abdc17 (cmGeneratorTarget: Move GetSOName
from cmTarget, 2015-08-04). Restore the conditional lookup. Add a test
case that hacks platform information variables to trigger this code
everywhere.
Since curl 7.39 the CURLOPT_CAPATH setting may be rejected with a
CURLE_NOT_BUILT_IN error. Simply tolerate this with silent failure
since we just will not use the CAPATH setting in this case.
If {ARCHIVE,LIBRARY,RUNTIME}_OUTPUT_DIRECTORY is set with a genex then
do not add the per-config subdirectory on multi-config generators.
This will allow projects to use $<CONFIG> to place the per-config
part of the directory path somewhere other than the end.
8c076a8b cmTarget: Remove unused AddSystemIncludeDirectories overload
5790aca4 target_include_directories: Support relative SYSTEM include dirs (#15464)
The compiler version reported since commit v2.8.2~1018 (CTest-side
support for compiler name and compiler version, 2009-10-12) only
reported the version of the compiler used to build CMake, and only
if it defined "_COMPILER_VERSION". Instead use the version of
the compiler used to build the project CTest is testing.
6d8a125e cmQtAutoGenerators: Prefer a generator to access global generator.
5f66900e cmGlobalGenerator: Port Find API to cmMakefile.
c5b8841f cmGlobalGenerator: Create global targets from cmMakefiles.
8f75ea3b cmGlobalGenerator: Port global target creation to cmMakefile.
56f0540b cmGlobalGenerator: Port Configure-time check to cmMakefile.
19b546ef cmGlobalGenerator: Base final target property computation on Makefiles.
f8be9ba9 cmGlobalGenerator: Base progress on Makefiles, not LocalGenerators.
bc1097e3 cmExportLibraryDependenciesCommand: Port to cmMakefile.
204aecdf cmGlobalGenerator: Port configure-time code to cmMakefile.
3dd6f0a5 cmake: Port configure-time code to cmMakefile.
73e4df99 cmGlobalGenerator: Store a container of cmMakefiles.
19369937 cmGeneratorTarget: Port internal type to cmGeneratorTarget.
32f131b0 cmGeneratorTarget: Prefer the local generator to access the global.
29886ce7 cmTarget: Use a simpler delete algorithm.
197f4de1 cmTarget: Split storage of compile definitions from genexes.
44e071ae cmTarget: Split storage of compile features from genexes.
772ecef4 cmTarget: Split storage of compile options from genexes.
1f54bc1c cmTarget: Split storage of include directories from genexes.
7568199b cmTarget: Request only the link libraries where needed.
10040601 cmLinkImplementationLibraries: Move to namespace scope.
d9da6ee2 cmLinkItem: Split to separate file.
27252b24 cmComputeLinkInformation: Simplify generator object access.
d035e968 get_filename_component: Fix bug where CACHE was ignored.
38ed5866 get_filename_component: Added initial tests for PROGRAM component.
772ca69f get_filename_component: Tests now check for proper CACHE usage.
If PROGRAM_ARGS is provided to get_filename_component, fix bug where the
command failed to honor the CACHE argument.
Added test cases to RunCMake.get_filename_component that fail when the
bug is not fixed to prevent regressions.
Signed-off-by: James Johnston <johnstonj.public@codenest.com>
nmake and jom generators no longer warn about missing INCLUDE/LIB
environment variables unless the C/CXX compiler cannot be found. This
is useful if the user does not want to use these generators with the
Visual C++ compiler, or they do not want to enable any language.
a309409e cmOrderDirectories: Port to cmGeneratorTarget.
f83e8402 cmGeneratorTarget: Move CompileInfoMap from cmTarget.
b3f0e353 cmGeneratorTarget: Move GetCompilePDBDirectory from cmTarget.
34c43741 cmGeneratorTarget: Move GetOutputName from cmTarget.
4329a71c cmComputeLinkDepends: Port to cmGeneratorTarget.
c93230ac cmComputeLinkInformation: Port to cmGeneratorTarget.
ee26add4 cmGeneratorTarget: Move IsBundleOnApple from cmTarget.
c8a5f5ae cmMakefileTargetGenerator: Add accessor for GeneratorTarget.
f8076644 cmGeneratorTarget: Move GetLinkClosure from cmTarget.
7c809fa2 cmGeneratorTarget: Move GetLinkerLanguage from cmTarget.
6da99de3 cmGeneratorTarget: Move GetFrameworkDirectory from cmTarget.
d6bb319b cmGeneratorTarget: Move GetFullName from cmTarget.
7a460852 cmGeneratorTarget: Move GetAppBundleDirectory from cmTarget.
d560bfd2 cmGeneratorTarget: Move GetInstallNameDir* from cmTarget.
89e2a080 cmGeneratorTarget: Move GetMacContentDirectory from cmTarget.
62720e44 cmGeneratorTarget: Move GetFullNameComponents from cmTarget.
...
Our explicit list of characters that require quoting does not account
for non-ascii characters (e.g. UTF-8) that also need quoting. Invert
the logic to quote a string unless it contains exclusively a set of
characters we whitelist.