summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalXCodeGenerator.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Xcode: Fix custom command work-dir placeholders in "new build system"Brad King2020-11-231-3/+11
| | | | | | | | The placeholders for `CONFIGURATION` and `EFFECTIVE_PLATFORM_NAME` need to be handled in the `WORKING_DIRECTORY` of custom commands just as we already do for the `COMMAND`. Fixes: #21483
* Revert "specify language flag when source LANGUAGE property is set"Brad King2020-11-191-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | Revert commit 74b1c9fc8e (Explicitly specify language flag when source LANGUAGE property is set, 2020-06-01, v3.19.0-rc1~722^2) and the lookup tables from its two immediate ancestors. The purpose of that change was to convert an explicit `LANGUAGE` source file property into an explicit language specification compiler flag like `-x c`. This seems reasonable since the property is documented as meaning "indicate what programming language the source file is". It is also needed to help compilers deal with non-standard source file extensions they don't recognize. However, some projects have been setting `LANGUAGE C` on `.S` assembler source files to mean "use the C compiler". Passing `-x c` for them breaks the build because the `.S` sources are not written in C. These projects should be updated to use `enable_language(ASM)`, for which CMake often chooses the C compiler as the assembler when using toolchains that support it (which would have to be the case for projects using the approach). Revert the change for now to preserve the old behavior for such projects. We can re-introduce it with a policy in a future version of CMake. Fixes: #21469 Issue: #14516, #20716
* Xcode: Clean library paths to avoid linker duplicate symbol definitionsGusts Kaksis2020-11-151-10/+20
|
* Xcode: Inherit target library and framework search paths from projectGusts Kaksis2020-11-051-0/+4
| | | | | | | | | | | | | | | | Xcode has multiple levels of build settings with priority in descending order: 1. Target 2. Project 3. Workspace 4. SDK defaults `CMAKE_XCODE_ATTRIBUTE_*` path variables add these to project level, but linked frameworks and libraries override this in target level. Add the `$(inherited)` macro to keep both in the final list. Fixes: #21387
* Xcode: Fix regression that automatically links libraries in source listGusts Kaksis2020-10-271-2/+3
| | | | | | | | | | | In commit e637744c51 (Xcode: Use "Link Binary With Libraries" to link any library, 2019-07-10, v3.19.0-rc1~494^2~1) we accidentally added all the library type files to "Link Binary With Libraries" build phase if they were passed in as source files. Revert that change as any actually linked libraries will be added to that build phase later in the `AddDependAndLinkInformation` call. Fixes: #21361
* Refactor: Add allowArch parameter to cmake::CreateGlobalGenerator()Kyle Edwards2020-10-051-1/+2
|
* Xcode: Don't add framework as -framework argument in linker info listGusts Kaksis2020-10-021-1/+9
|
* Merge topic 'macos-arm64'Brad King2020-10-011-0/+4
|\ | | | | | | | | | | | | | | | | b6c60f14b6 macOS: Default to arm64 architecture on Apple Silicon hosts 383e81aa60 Tests: Teach RunCMake to ignore Xcode internal objc warnings 8f75912176 Tests: Enable Assembler test case when CMAKE_OSX_ARCHITECTURES has one value Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5291
| * macOS: Default to arm64 architecture on Apple Silicon hostsBrad King2020-09-301-0/+4
| | | | | | | | | | | | | | | | Detect `arm64` hardware using a method that pierces Rosetta. If `CMAKE_OSX_ARCHITECTURES` is not set, pass explicit flags to the toolchain to use `arm64` instead of letting the toolchain pick. Fixes: #20989
* | cmake::GetCacheDefinition: Return cmPropvvs314152020-09-281-3/+2
|/
* Xcode: Remove dependency Makefile hacks under the "new build system"Brad King2020-09-241-11/+17
| | | | | | | The original Xcode build system did not properly re-link targets that consumed object libraies. We worked around that with a post-build command on the object libraries themselves that removed their consumers if out of date. The "new build system" does not appear to need such help, so drop the workaround.
* Xcode: Remove remnants of ancient XCODE_DEPEND_HELPER utility targetBrad King2020-09-241-5/+4
| | | | | | The target has not been generated since commit d92d51429e (BUG: fix for bug 6193, fix xcode depend helper, 2008-01-10, v2.6.0~553). Remove it from the list of special targets.
* Xcode: Switch to the "new build system" for Xcode 12 and aboveBrad King2020-09-181-27/+302
| | | | | | | Provide an option to switch back to the original build system via `-T buildsystem=1`. Fixes: #18088
* Xcode: Add option to specify build system variantBrad King2020-09-181-12/+103
| | | | | | Extend the `-T <toolset>` option to support a `buildsystem=` field with the Xcode generator. Add a `CMAKE_XCODE_BUILD_SYSTEM` variable to inform project code about the selected build system variant.
* Xcode: Factor out build phase variable declarationsBrad King2020-09-181-7/+12
|
* Xcode: Clarify name of legacy run script build phase helperBrad King2020-09-181-5/+5
|
* cmGlobalGenerator: Compute a global target ordering respecting dependenciesBrad King2020-09-041-39/+2
| | | | | Move this up from `cmGlobalXCodeGenerator`. It will be useful for all generators.
* Merge topic 'getdef'Brad King2020-09-031-14/+13
|\ | | | | | | | | | | | | 11425041f0 cmMakefile::GetDefinition: return cmProp Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5179
| * cmMakefile::GetDefinition: return cmPropVitaly Stakhovsky2020-09-021-14/+13
| |
* | Xcode: Avoid unnecessary duplication of custom commands across targetsBrad King2020-09-011-1/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | Do not attach a custom command to a target if it is already attached to one of the target's dependencies. The command's output will be available by the time the target needs it because the dependency containing the command will have already been built. Since commit fb45559e09 (Xcode: Process targets in depth-first order during generation, 2018-07-19, v3.13.0-rc1~293^2) we generate a target only after generating its dependencies. Therefore when visiting the custom commands in a target, we can assume that custom commands in its dependencies have already been visited.
* | Xcode: Refactor custom command dependency expansionBrad King2020-09-011-6/+11
|/ | | | Compute and store the "real" dependencies earlier.
* Xcode: Use "Link Binary With Libraries" build phase in some casesGusts Kaksis2020-08-311-68/+216
| | | | | | | OBJECT and STATIC libraries (framework or non-framework) do not use this build phase. Not all items to be linked use this build phase either. Co-Authored-By: Craig Scott <craig.scott@crascit.com>
* Xcode: Add special case for file type extension map for .xcassetsGusts Kaksis2020-08-281-0/+3
|
* Xcode: Refactor build setting append code and attribute getter namingGusts Kaksis2020-08-281-47/+68
| | | | Support both STRING and OBJECT_LIST types in build setting attributes and make it possible to mix them
* Add INTERFACE libraries to generated buildsystem if they have SOURCESBrad King2020-08-071-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | INTERFACE libraries were created with the intention of collecting usage requirements for use by other targets via `target_link_libraries`. Therefore they were not allowed to have SOURCES and were not included in the generated buildsystem. In practice, this has become limiting: * Header-only libraries do have sources, they just do not compile. Developers should be able to edit those sources (the header files) in their IDE. * Header-only libraries may need to generate some of their header files via custom commands. Some projects work around these limitations by pairing each interface library with an `add_custom_target` that makes the header files and custom commands appear in the generated buildsystem and in IDEs. Lift such limitations by allowing INTERFACE libraries to have SOURCES. For those with sources, add a corresponding build target to the generated buildsystem. Fixes: #19145
* Source: use cmNonempty()Vitaly Stakhovsky2020-07-281-2/+2
|
* Merge topic 'cleanup-target-types'Brad King2020-07-281-11/+7
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ef796cc743 cmGeneratorTarget: Skip computing link implementation for custom targets 45158b2afe cmGeneratorTarget: Simplify logic in ComputeLinkInterfaceLibraries d6b1f5704e cmGeneratorTarget: Add missing nullptr checks 7695b67500 cmComputeTargetDepends: Add missing nullptr check 95b5df8646 cmGeneratorTarget: Skip computing languages for custom targets 2f0790df50 Factor out generator checks for filtering on non-compiling targets 422d9a0ab2 Factor out generator checks for filtering out interface libraries bce82df0aa cmGeneratorTarget: Remove unnecessary target type check in dependency tracing ... Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Kyle Edwards <kyle.edwards@kitware.com> Merge-request: !5038
| * Factor out generator checks for filtering out interface librariesBrad King2020-07-231-11/+7
| | | | | | | | | | | | Add a `cmGeneratorTarget::IsInBuildSystem` helper method to tell generators whether a target should participate in the generated build system.
* | Merge topic 'xcode-12-legacy-deprecation'Brad King2020-07-271-0/+2
|\ \ | |/ |/| | | | | | | | | 36fc3a1e84 Xcode: Suppress legacy build system deprecation warning Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5052
| * Xcode: Suppress legacy build system deprecation warningBrad King2020-07-231-0/+2
| | | | | | | | | | | | | | | | Xcode 12 beta 3 now warns about using the legacy build system. Since generation of the build system is CMake's responsibility, the warning is not relevant to our users. Suppress it. Issue: #18088
* | Merge topic 'xcode-native-arch'Craig Scott2020-07-211-1/+18
|\ \ | | | | | | | | | | | | | | | | | | | | | 26673bf480 Xcode: Explicitly specify default native architecture on macOS ce624cfbd4 cmGlobalXCodeGenerator: Save CMAKE_SYSTEM_NAME in member Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5023
| * | Xcode: Explicitly specify default native architecture on macOSBrad King2020-07-201-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When `CMAKE_OSX_ARCHITECTURES` is not specified, we add the Xcode setting `ONLY_ACTIVE_ARCH = YES` with the intention of targeting the native architecture of the host. However, the default `ARCHS` value chosen by "Xcode 12 Universal Apps" includes multiple architectures. Add an explicit `ARCHS` setting with value `$(NATIVE_ARCH_ACTUAL)` to tell Xcode to use the host's native architecture only. Fixes: #20893
| * | cmGlobalXCodeGenerator: Save CMAKE_SYSTEM_NAME in memberBrad King2020-07-161-0/+7
| |/
* | Xcode: Explicitly turn off signing in try_compile projectsBrad King2020-07-161-0/+6
| | | | | | | | Fixes: #18407, #20571, #20688
* | Xcode: Special treatment for directly linked framework binariesGusts Kaksis2020-07-141-6/+19
| | | | | | | | Always refer to framework directory instead of binary directly.
* | Xcode: Use "Link Binary With Libraries" to link any libraryGusts Kaksis2020-07-141-54/+142
| | | | | | | | | | | | | | | | | | | | Add external libraries as fileRefs to Xcode project and add those references to Link Binary With Libraries build phase. This allows linking .a, .o, .dylib, .framework and .tbd libraries through "Link Binary With Libraries" build phase, as opposed to `OTHER_LINKER_FLAGS`. This improves on the approach added by commit 58c05e1c73 (Xcode: Use "Link Binary With Libraries" build phase when possible, 2020-06-12).
* | Merge topic 'refactor-generator-configs'Brad King2020-07-061-5/+2
|\ \ | | | | | | | | | | | | | | | | | | 7a969fe21d cmMakefile: Refactor API to better handle empty config values Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4957
| * | cmMakefile: Refactor API to better handle empty config valuesRobert Maynard2020-07-031-5/+2
| | |
* | | Xcode: Fix LANGUAGE property on .m/.mm filesHarry Mallon2020-07-031-7/+10
|/ / | | | | | | | | | | | | When OBJC or OBJCXX is enabled as a language, prefer that for .m and .mm source file language selection. Fixes: #20257
* | Xcode: Use "Link Binary With Libraries" build phase when possibleGusts Kaksis2020-06-171-17/+172
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Try linking all target linked libraries through frameworks build phase instead of linker flags, thus letting Xcode manage build product paths correctly. Prevent adding duplicate entries to "Link Binary With Libraries" build phase. Add check for configuration-dependent linking - in case the library is not present in all configurations revert back to linker flags which are per-configuration. This does change the order of libraries linked, but that does not seem to matter for Apple linkers invoked by Xcode, even for static libraries. The linker will go back and re-consider a static library from earlier on the link line when more symbols from its objects are needed. Fixes: #14185
* | Xcode: Refactor generator variable names and typesGusts Kaksis2020-06-151-13/+13
| | | | | | | | | | * Instead of `classes` use name `commonSourceFiles`. * No need for reference when you have pointer.
* | Explicitly specify language flag when source LANGUAGE property is setRobert Maynard2020-06-091-0/+8
|/ | | | Fixes: #14516, #20716
* cmMakefile: add GetDefExpandList() that splits value into std::vectorVitaly Stakhovsky2020-05-301-3/+2
| | | | Combines cmMakefile:GetDefinition() and cmExpandList()
* GetSafeProperty: return std::string const&Vitaly Stakhovsky2020-04-301-3/+3
|
* cmGeneratorTarget::GetProperty: return cmPropVitaly Stakhovsky2020-04-291-24/+24
|
* cmOutputConverter::GetFortranFormat(): delete const char* overloadVitaly Stakhovsky2020-04-271-4/+3
|
* Refactoring: add cm::contains to <cmext/algorithm>Marc Chevrier2020-04-171-5/+4
|
* Merge topic 'cmprop-source'Brad King2020-04-151-18/+23
|\ | | | | | | | | | | | | | | e64fa5f1b6 cmSourceFile::GetProperty: return cmProp fc223f9860 cmGlobalXCodeGenerator: Fix genex interpreter overloads Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4603
| * cmSourceFile::GetProperty: return cmPropVitaly Stakhovsky2020-04-141-16/+17
| |
| * cmGlobalXCodeGenerator: Fix genex interpreter overloadsBrad King2020-04-141-2/+6
| | | | | | | | | | | | Overload both signatures to add Xcode-specific functionality. Co-Author: Vitaly Stakhovsky <vvs31415@gitlab.org>