summaryrefslogtreecommitdiffstats
path: root/Modules/Platform
Commit message (Collapse)AuthorAgeFilesLines
* Intel: Replace deprecated Fortran flag -nofor_main with -nofor-mainBrad King2021-01-221-1/+1
| | | | | | | | | | The `-nofor_main` flag was originally added by commit ccdd3e943d (Fix Intel Fortran SHARED libraries on Linux, 2009-10-27, v2.8.2~915). Since then, Intel Fortran renamed the option to `-nofor-main` and deprecated the old name. The new name has been available for a long time, so we can just switch to it. Fixes: #21735
* macOS: Add /opt/homebrew to CMAKE_SYSTEM_PREFIX_PATH on Apple SiliconBrad King2020-12-111-0/+7
| | | | | | | According to https://brew.sh/2020/12/01/homebrew-2.6.0/ the `/opt/homebrew` directory is recommended for installing ARM architecture brew packages. Fixes: #21585
* macOS: Offer control over host architecture on Apple Silicon hostsBrad King2020-12-101-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | Since commit b6c60f14b6 (macOS: Default to arm64 architecture on Apple Silicon hosts, 2020-09-28, v3.19.0-rc1~63^2) we use `sysctl` to detect that we are running on Apple Silicon in a way that pierces Rosetta. This always sets `CMAKE_HOST_SYSTEM_PROCESSOR` to be `arm64` on such hosts. However, macOS offers strong support for running processes under an emulated `x86_64` architecture. Teach CMake to select either `arm64` or `x86_64` as the host architecture on Apple Silicon based on the architecture of its own process. When CMake is built as a universal binary, macOS will select whichever slice (architecture) is appropriate under the user's shell, and `CMAKE_HOST_SYSTEM_PROCESSOR` will match. Also offer a `CMAKE_APPLE_SILICON_PROCESSOR` variable and environment variable to provide users with explicit control over the host architecture selection regardless of CMake's own architecture. Finally, if `CMAKE_OSX_ARCHITECTURES` is not set, pass explicit flags to the toolchain to use selected host architecture instead of letting the toolchain pick. Fixes: #21554
* llvm-rc: Force C language for the clang gnu frontendThomas Bernard2020-12-021-5/+5
| | | | | | | | When preprocessing the rc file using the clang gnu front end we need to force the source file type to a c file for the preprocessing to take place. Fixes: #21472
* Clang on Windows: 'LINKER:' prefix must be honoredMarc Chevrier2020-11-301-0/+3
| | | | Fixes: #21094
* Android: Use NDK_KNOWN_DEVICE_ABI{32,64}S instead of NDK_DEFAULT_ABISHaibo Huang2020-11-101-4/+13
| | | | | | | | | | Revise logic from commit 1ab574a0f4 (Android: Add support for NDK r22, 2020-10-07, v3.19.0-rc1~18^2) that loads ABI tables from the NDK. `NDK_DEFAULT_ABIS` means the abis to build by default. Use `NDK_KNOWN_DEVICE_ABI{32,64}S` instead. In practise they have never been different. Fix to make it more precise.
* Apple: Update SDK architecture detection for tbd file version 4Tor Arne Vestbø2020-11-051-3/+9
| | | | | | Extend the `.tbd` parsing from commit 170e598add (iOS: Fix detection of supported SDK architectures, 2020-04-16, v3.17.2~11^2) to support `.tbd` file version 4.
* Android: show supported API level in error messageHaibo Huang2020-10-131-1/+2
|
* Android: Fatal if ABI is not supported by NDKHaibo Huang2020-10-091-0/+6
|
* Android: Add support for NDK r22Haibo Huang2020-10-071-24/+64
| | | | | NDK r22 removed platforms and sysroot directory. NDK r18+ provides `.cmake` files with tables of platforms and abis.
* Android: Drop redundant setting of CMP0057 in Android-DetermineHaibo Huang2020-10-071-3/+0
| | | | | | A module-wide setting was added by commit 8ede35523e (IN_LIST: Ensure policy allows if(IN_LIST) if used by a module, 2018-09-12, v3.13.0-rc1~95^2), so our local setting is no longer needed.
* Android: Select Android API after ABI is determinedHaibo Huang2020-10-071-60/+60
| | | | API level depends on ABI. E.g. for LP64 the minimum API level should be 21 instead of 16 for others.
* macOS: Default to arm64 architecture on Apple Silicon hostsBrad King2020-09-301-0/+11
| | | | | | | | 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
* Clang: Implement CMAKE_${LANG}_COMPILER_TARGET for all variants on windowsThomas Bernard2020-09-112-8/+12
| | | | Fixes: #21097
* Merge topic 'ios-pch-x-lang-header'Brad King2020-09-092-2/+12
|\ | | | | | | | | | | | | 8d61294c3e PCH: Mark CMake PCH source files as -x <lang>-header Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5188
| * PCH: Mark CMake PCH source files as -x <lang>-headerCristian Adam2020-09-042-2/+12
| | | | | | | | Fixes: #21163
* | Merge topic 'ispc_lang_support'Brad King2020-09-011-0/+8
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5ece12b7e4 gitlab-ci: add ISPC to the Fedora CI image 8976817d6d ISPC: Update help documentation to include ISPC 2368f46ba4 ISPC: Support building with the MSVC toolchain e783bf8aa6 ISPC: Support ISPC header generation byproducts and parallel builds 34cc6acc81 Add ISPC compiler support to CMake 419d70d490 Refactor some swift only logic to be re-used by other languages Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5065
| * | ISPC: Support building with the MSVC toolchainRobert Maynard2020-08-281-0/+8
| | |
* | | llvm-rc: Enable preprocessing for all Windows usage variantsThomas Bernard2020-08-271-0/+2
| | | | | | | | | | | | Fixes: #21096
* | | llvm-rc: Refactor the preprocessing logicThomas Bernard2020-08-271-20/+27
| | |
* | | Merge topic 'clang-cl-restore-preprocess'Brad King2020-08-211-2/+2
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 7b083d59c2 clang-cl: Restore rules to create preprocessed and assembly output Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5142
| * | | clang-cl: Restore rules to create preprocessed and assembly outputBrad King2020-08-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | In commit d993ebd4ca (clang-cl: Add '--' before source file, 2020-07-28) we accidentally replaced these rules with those to compile an object file.
* | | | Merge branch 'backport-3.18-llvm-rc-quote-cmake' into llvm-rc-quote-cmakeBrad King2020-08-181-1/+1
|\ \ \ \ | |/ / / |/| | / | | |/ | |/|
| * | llvm-rc: Fix quoting of path to cmake in CMAKE_RC_COMPILE_OBJECTThomas Bernard2020-08-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | When the installation path to cmake includes spaces, the `<CMAKE_COMMAND>` is required to have proper quotation of the cmake call. Fixes: #21095
* | | clang-cl: Add '--' before source fileThomas Bernard2020-08-072-1/+9
| | | | | | | | | | | | | | | | | | | | | On Linux and macOS, absolute paths start with `/` which may be interpreted by clang-cl as an option. To avoid this, we separate the source file path from preceding options with `--` to tell `clang-cl` it is not an option.
* | | cmake: Change cmake_llvm_rc separator from -- to ++ to avoid conflictThomas Bernard2020-08-071-1/+1
| |/ |/|
* | Detect the correct target architecture for clang compilers.Thomas Bernard2020-07-281-0/+5
| | | | | | | | | | | | During compiler identification, if CMAKE_{C,CXX}_COMPILER_TARGET is defined, the corresponding clang target flag is used to guaranty proper target architecture detection.
* | Fix typos identified using codespellJean-Christophe Fillion-Robin2020-07-222-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See https://github.com/codespell-project/codespell#readme The following command was used: ``` codespell -q6 --skip="\ .git,\ *.json,\ ./Copyright.txt,\ ./Help/command/foreach.rst,\ ./Help/prop_test/REQUIRED_FILES.rst,\ ./Help/variable/CTEST_COVERAGE_COMMAND.rst,\ ./Modules/CMakeCheckCompilerFlagCommonPatterns.cmake,\ ./Modules/CMakeRCInformation.cmake,\ ./Modules/Internal/CPack/NSIS.template.in,\ ./Modules/FindMatlab.cmake,\ ./Modules/MatlabTestsRedirect.cmake,\ ./Modules/Platform/Windows-Clang.cmake,\ ./Modules/Platform/Windows-Intel-Fortran.cmake,\ ./Modules/Platform/Windows-MSVC.cmake,\ ./Source/CMakeVersion.cmake,\ ./Source/cmConvertMSBuildXMLToJSON.py,\ ./Source/cmCreateTestSourceList.cxx,\ ./Source/cmGlobalVisualStudio10Generator.cxx,\ ./Source/cmExportBuildFileGenerator.cxx,\ ./Source/cmExportInstallAndroidMKGenerator.cxx,\ ./Source/cmExportInstallFileGenerator.cxx,\ ./Source/cmExportSet.cxx,\ ./Source/cmExportTryCompileFileGenerator.cxx,\ ./Source/cmFindPackageCommand.cxx,\ ./Source/cmInstallCommand.cxx,\ ./Source/cmGeneratorExpressionLexer.cxx,\ ./Source/cmLocalVisualStudio7Generator.cxx,\ ./Source/cmOrderDirectories.cxx,\ ./Source/cmTarget.cxx,\ ./Source/kwsys/*,\ ./Source/QtDialog/CMakeSetupDialog.ui,\ ./Source/CPack/WiX/cmWIXRichTextFormatWriter.cxx,\ ./Source/CTest/cmParseCoberturaCoverage.h,\ ./Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/English.license.rtf,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/German.license.txt,\ ./Tests/RunCMake/CPack/tests/DMG_SLA/German.menu.txt,\ ./Tests/RunCMake/GoogleTest/xml_output.cpp,\ ./Tests/RunCMake/Make/TargetMessages*,\ ./Utilities/*,\ " \ -L "\ dependees,\ endwhile,\ fo,\ filetest,\ helpfull,\ nd,\ objext,\ stoll,\ supercedes,\ superceded,\ vas,\ varn,\ " ```
* | macOS: Always pick latest SDK if user has not set one explicitlyTor Arne Vestbø2020-07-141-21/+12
| | | | | | | | | | | | | | Apple tech note QA1806 recommends always building against the latest SDK. Fixes: #20949
* | Darwin: prefix internal osx variables with "_" to hide them from usersChuck Cranor2020-07-031-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | A simple CMakeLists.txt on osx shows that variable "d" is set (but empty) by the system modules. this pollutes the user's variable namespace. I noticed this when I created a library target "d" and got unexpected policy CMP0054 warnings when trying to find_package(d CONFIG REQUIRED) (triggered from the generated "d-targets.cmake" ...). Note that non-"_" prefixed internal variables are ok within functions due to scoping rules. Fixes: #20898
* | Visual Studio: Add Android supportKyle Edwards2020-06-244-3/+101
|/
* Darwin: honour `CMAKE_OSX_SYSROOT` more faithfullySaleem Abdulrasool2020-05-311-5/+21
| | | | | | | The libraries in the SDK should be given precedence over the system libraries. Check for the default library search path (in default order) of `/usr/lib` and `/usr/local/lib` and use these as system prefix paths for libraries when performing the link step against a specified SDK.
* Merge topic 'support_conda_env'Brad King2020-05-221-0/+4
|\ | | | | | | | | | | | | | | | | 50879ce412 Conda: Add CONDA_PREFIX as an acceptable system prefix path cd9c3c000f Tests: Update QtAutogen codeeditor test only include headers needed d806bd2e8c Tests: Update test suite to run in an Anaconda environment Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4773
| * Conda: Add CONDA_PREFIX as an acceptable system prefix pathRobert Maynard2020-05-211-0/+4
| |
* | Merge branch 'backport-cuda-default-runtime' into cuda-default-runtimeBrad King2020-05-221-1/+0
|\ \ | |/ |/|
| * CUDA: Compute CMAKE_CUDA_RUNTIME_LIBRARY default from toolchainRobert Maynard2020-05-211-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 0d0145138f (CUDA: Add abstraction for cuda runtime selection, 2019-11-29, v3.17.0-rc1~83^2) we add CUDA runtime library selection flags by default. To maintain backwards compatibility the default CUDA runtime library needs to be computed based on what libraries are found on the initial compiler invocation. For example a toolchain could establish initial flags that have all CUDA compilations using the runtime version, and if we don't detect this we will try to link to both the static and shared runtime. Co-Author: Brad King <brad.king@kitware.com> Fixes: #20708
| * Merge topic 'pch-msvc-pragma' into release-3.17Brad King2020-05-121-7/+5
| |\ | | | | | | | | | | | | | | | | | | 6c2514dabe MSVC: Use 'pragma system_header' in PCH only on cl 19.13 and above Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4736
* | \ Merge topic 'doc-CMAKE_SYSTEM_PREFIX_PATH'Craig Scott2020-05-202-0/+11
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 6b3d8f281e Document which environment variables effect CMAKE_SYSTEM_PREFIX_PATH Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4748
| * | | Document which environment variables effect CMAKE_SYSTEM_PREFIX_PATHRobert Maynard2020-05-192-0/+11
| | | |
* | | | CUDA: Add support for Clang compilerRaul Tambre2020-05-151-0/+4
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When crosscompiling we pass the sysroot. We need to try various architecture flags. Clang doesn't automatically select one that works. First try the ones that are more likely to work for modern installations: * <=sm_50 is deprecated since CUDA 10.2, try sm_52 first for future compatibility. * <=sm_20 is removed since CUDA 9.0, try sm_30. Otherwise fallback to Clang's current default. Currently that's `sm_20`, the lowest it supports. Separable compilation isn't supported yet. Fixes: #16586
* | | Merge topic 'pch-msvc-pragma'Brad King2020-05-121-7/+5
|\ \ \ | | |/ | |/| | | | | | | | | | | | | 6c2514dabe MSVC: Use 'pragma system_header' in PCH only on cl 19.13 and above Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4736
| * | MSVC: Use 'pragma system_header' in PCH only on cl 19.13 and aboveBrad King2020-05-111-7/+5
| | | | | | | | | | | | | | | | | | | | | VS 2017 15.6 introduced support for this pragma. Older MSVC versions warn that it is unknown. Fixes: #20692
| * | Merge topic 'android-ndk-r19-binutils' into release-3.16Brad King2020-02-041-0/+1
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | e3d3b7ddeb Android: Fix binutils selection with NDK r19+ unified toolchain Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4318
* | | | OpenWatcom: Add cross-compilation support for WindowsJiri Malak2020-05-061-2/+11
| | | | | | | | | | | | | | | | Add system header files directories for cross-compilation
* | | | OpenWatcom: Fix Linux support fileJiri Malak2020-05-061-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | Fix CMAKE_SHARED_LINKER_FLAGS_INIT macro Fix executable file name for Linux to be without extension Add system header files directory for cross-compilation
* | | | OpenWatcom: Add OS/2 target supportJiri Malak2020-05-064-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OS/2 16-bit and 32-bit target support files for cross-compilation by OpenWatcom. It is used if CMAKE_SYSTEM_NAME=OS2 is defined. If CMAKE_SYSTEM_PROCESSOR=I86 is defined then 16-bit OS/2 target is used, otherwise 32-bit OS/2 target is used.
* | | | OpenWatcom: Add DOS target supportJiri Malak2020-05-064-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DOS 16-bit and 32-bit target support files for cross-compilation by OpenWatcom. It is used if CMAKE_SYSTEM_NAME=DOS is defined. If CMAKE_SYSTEM_PROCESSOR=I86 is defined then 16-bit DOS target is used, otherwise 32-bit DOS target is used.
* | | | OpenWatcom: Add Linux supportJiri Malak2020-04-293-0/+18
| | | | | | | | | | | | | | | | | | | | It is native Linux support for Linux host executable only (only static library support, no shared library support).
* | | | OpenWatcom: Move non-Windows settings to Modules/CompilerJiri Malak2020-04-281-109/+3
| | | | | | | | | | | | | | | | | | | | Restructure OpenWatcom toolchain support files to simplify adding of new targets DOS, OS/2 and Linux including cross-compilation.
* | | | CUDA: Device linking use now link optionsMarc Chevrier2020-04-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | properties LINK_OPTIONS and INTERFACE_LINK_OPTIONS are propagated to the device link step. To control which options are selected for normal link and device link steps, the $<DEVICE_LINK> and $<HOST_LINK> generator expressions can be used. Fixes: #18265