summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeFindBinUtils.cmake
Commit message (Collapse)AuthorAgeFilesLines
* MSVC: Use 'lib' instead of 'link /lib' to create static librariesFrancisco Facioni2020-03-031-0/+1
| | | | | | `link.exe /lib` is an undocumented flag and it just calls `lib.exe`. Also `link.exe` doesn't parse the `/lib` option correctly when in a response file.
* FindBinUtils: Revert "Use the compiler to get the path to compiler tools"Brad King2019-11-071-59/+11
| | | | | | | | Revert commit b2fd479df5 (FindBinUtils: Use the compiler to get the path to compiler tools, 2019-09-22, v3.16.0-rc1~51^2). The compiler's answer may incorrectly come from the `PATH`. Another approach will be needed. Fixes: #19934
* CMakeFindBinUtils: Remove unnecessary variable unset callsBrad King2019-10-151-12/+0
| | | | | | | | | Some unset calls were added by commit 079b8e2916 (Clang: prefer lld-link over link.exe, 2019-07-11, v3.16.0-rc1~161^2~2) but they are unnecessary since commit 3a82ef78eb (CMakeFindBinUtils: Rename and unset variables for additional names, 2019-07-23, v3.16.0-rc1~332^2~2). Suggested-by: Norbert Lange <nolange79@gmail.com>
* FindBinUtils: Use the compiler to get the path to compiler toolsIsuru Fernando2019-09-271-11/+59
| | | | Fixes: #19728
* Use _CMAKE_TOOLCHAIN_PREFIX for install_name_tool as wellIsuru Fernando2019-09-181-1/+1
|
* Clang: prefer lld-link over link.exeZsolt Parragi2019-08-271-1/+17
| | | | | | Objects compiled with -flto can only be linked with the llvm linker. Before this change, clang-cl only supperted IPO with manual linker selection.
* CMakeFindBinUtils: add some more binutilsNorbert Lange2019-07-231-1/+7
|
* CMakeFindBinUtils: add missing llvm alternativesNorbert Lange2019-07-231-6/+9
| | | | | LLVM 8.0 already ships with alternatives for all current Binutils. Enable them.
* CMakeFindBinUtils: Rename and unset variables for additional namesNorbert Lange2019-07-231-13/+14
| | | | | use the name pattern `_CMAKE_ADDITIONAL_<PROGRAM_NAME>_NAMES`, and unset those variables at the end of the function
* binutils: add the llvm-* variants to the tool lists.Zsolt Parragi2019-05-171-5/+16
| | | | | | | This allows cmake to use the ar/ranlib/objdump/ld tools on windows without mingw installed. These tools are selected when clang is in GNU command line mode.
* MSVC: Respect CMAKE_RC_COMPILER and CMAKE_MT in vs_link_{dll,exe}Mateusz Zych2018-10-291-16/+36
| | | | | | | | | | | | CMake commands vs_link_dll and vs_link_exe, performing linking on MSVC, are responsible for calling resource compiler and manifest tool. Before this commit, both of these tools were called directly, with the expectation that they are available in the `PATH`. This has been fixed by respecting CMake variables `CMAKE_RC_COMPILER` and `CMAKE_MT` defining paths to these tools. Fixes: #17804
* CUDA: Find CMAKE_LINKER on WindowsBrad King2018-10-291-0/+1
| | | | | We use this in `Modules/Platform/Windows-NVIDIA-CUDA.cmake`, so make sure it is available.
* CMakeFindBinUtils: Fix use with non-cached tool settingsBrad King2018-09-051-3/+15
| | | | | | | | | | If a project or toolchain file hard-codes a tool location such as `CMAKE_LINKER` with a plain `set()` then the value will be stored in compiler information files but not cached. If the value is not cached then we should not mark it as advanced because doing so will initialize an empty cache entry. Fixes: #18315
* CMakeFindBinUtils: Find linker in PATHxoviat2018-02-211-0/+19
| | | | Fixes: #17693
* CMakeFindBinUtils: Improve switch between MSVC- and GNU-like toolsBrad King2017-11-281-10/+3
| | | | | | | | The switch was not considering some languages, such as `ASM`. Instead of memorizing the list of languages in the condition, use a language specified by the includer. Fixes: #17510
* Windows-PGI: Add platform definitionsChristian Pfeiffer2017-05-201-0/+4
| | | | | | | PGI on Windows should use the Visual C++ linker and librarian and not the ar provided for legacy reasons. The compiler parameters themselves are the same as their Linux parameters and not compatible to MSVC however.
* CUDA: Find MSVC binutils on WindowsBrad King2017-01-121-0/+1
| | | | | On Windows the host link launcher is just `link.exe`. Find and use that instead of trying to extract the launcher from the `nvcc -v` output.
* Simplify CMake per-source license noticesBrad King2016-09-271-13/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* Avoid if() quoted auto-dereference when checking for "MSVC"Fraser Hutchison2014-11-191-5/+5
| | | | | When testing CMAKE_<LANG>_COMPILER_ID values against "MSVC", do not allow the definition of the "MSVC" variable to be expanded.
* Avoid if() quoted auto-dereferenceBen Boeckel2014-10-201-6/+6
| | | | | | | When testing CMAKE_<LANG>_COMPILER_ID values, do not explicitly dereference or quote the variable. We want if() to auto-dereference the variable and not its value. Also replace MATCHES with STREQUAL where equivalent.
* VS: Detect compiler id of Nsight Tegra-Android toolchainsBrad King2014-09-291-1/+2
| | | | | | | | | | Teach CMakeDetermineCompilerId to recognize the Tegra-Android platform and generate a test project for Nsight Tegra tools. Locate the full path to CMAKE_<LANG>_COMPILER by computing it within the test project build environment. Also teach CMakeFindBinUtils that this variant of the Visual Studio generator uses UNIX-like instead of MS-like archiving and linking tools.
* OS X: Only search for install_name_tool if the toolchain has itFlorent Castelli2014-07-021-3/+1
| | | | | | When cross compiling, toolchains won't have install_name_tool, which is provided by Xcode and command line tools on OS X. This is a Mach-O specific utility and not required on all platforms.
* Allow toolchain files to specify an external toolchain.Stephen Kelly2013-11-191-1/+6
| | | | | | | | | Clang can compile code, but uses the gcc tools for other tasks such as linking. The -gcc-toolchain option can be used for that, but generalize so that other compilers can be treated the same. If such a location is specified, use it as a hint for finding the binutils executables.
* Intel: When simulating MSVC, re-use Windows-MSVC (#14476)Brad King2013-10-181-0/+1
| | | | | | | | | Teach CMake(C|CXX|Fortran)CompilerId* to report the MSVC version simulated by the Intel compiler, if any. Refactor the Windows-Intel platform information helper module to load Windows-MSVC instead of duplicating the information. Teach Windows-MSVC to understand when it is loaded as the simulated Fortran compiler (its preprocessor is simulated).
* Clang: Support Windows variants for GNU and MSVC (#13035, #14458)Brad King2013-10-041-2/+4
| | | | | | | | | | | | | | | | Teach the compiler identification preprocessor tests to report when Clang simulates MSVC, and what version. If not MSVC, assume GNU. Teach compiler information modules Clang-(C|CXX) to recognize when Clang simulates MSVC and skip loading the GNU information. Teach the Windows-MSVC platform information to recognize when it is loaded as the simulated compiler and use that version information instead of the real compiler's (different) version scheme. Add platform modules Windows-Clang-(C|CXX) and support module Windows-Clang to load either Windows-MSVC or Windows-GNU and wrap the corresponding information macros.
* TI compiler: add automatic detection of prefix and suffixesAlex Neundorf2013-03-141-7/+2
| | | | | | | The TI cross compilers are named e.g. cl6x or armcl, the accompanying strip and ar have the same prefixes/suffixes. Alex
* rename TI_DSP toolchain to TI, since it works also for the ARM compilerAlex Neundorf2013-03-141-0/+5
| | | | | | Additionally, look for a special ar and strip Alex
* Remove CMake multiline block-end command argumentsMarcin Wojdyr2012-08-151-6/+2
| | | | removing arguments omitted in 9db3116226cb99fcf54e936c833953abcde9b729
* Remove CMake-language block-end command argumentsKitware Robot2012-08-131-3/+3
| | | | | | | | | | | | | | | | | Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
* Convert CMake-language commands to lower caseKitware Robot2012-08-131-23/+23
| | | | | | | | | | | | | | | | | Ancient CMake versions required upper-case commands. Later command names became case-insensitive. Now the preferred style is lower-case. Run the following shell code: cmake --help-command-list | grep -v "cmake version" | while read c; do echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | xargs -0 sed -i -f convert.sed && rm convert.sed
* Remove trailing whitespace from most CMake and C/C++ codeKitware Robot2012-08-131-6/+6
| | | | | | | | | | | | | | | | | Our Git commit hooks disallow modification or addition of lines with trailing whitespace. Wipe out all remnants of trailing whitespace everywhere except third-party code. Run the following shell code: git ls-files -z -- \ bootstrap doxygen.config '*.readme' \ '*.c' '*.cmake' '*.cpp' '*.cxx' \ '*.el' '*.f' '*.f90' '*.h' '*.in' '*.in.l' '*.java' \ '*.mm' '*.pike' '*.py' '*.txt' '*.vim' | egrep -z -v '^(Utilities/cm|Source/(kwsys|CursesDialog/form)/)' | egrep -z -v '^(Modules/CPack\..*\.in)' | xargs -0 sed -i 's/ \+$//'
* Modules: Fix spelling 'To distributed' -> 'To distribute'Todd Gamblin2010-08-091-1/+1
|
* Convert CMake non-find modules to BSD LicenseBrad King2009-09-281-0/+12
| | | | | | | This adds copyright/license notification blocks CMake's non-find modules. Most of the modules had no notices at all. Some had notices referring to the BSD license already. This commit normalizes existing notices and adds missing notices.
* ENH: Cleanup Find* modules with new HINTS featureBrad King2008-06-091-22/+9
| | | | | | | | | | - The find_* commands now provide a HINTS option. - The option specifies paths to be preferred over the system paths. - Many Find* modules were using two find calls with NO_DEFAULT_PATH to approximate the behavior, but that blocked users from overriding things with CMAKE_PREFIX_PATH. - This commit uses the HINTS feature to get desired behavior in only one find command call.
* ENH: Use builtin chrpath instead of relinking ELF targetsBrad King2008-03-011-13/+0
| | | | | | | | | | - Add cmSystemTools::ChangeRPath method - Add undocumented file(CHRPATH) command - When installing use file(CHRPATH) to change the rpath instead of relinking - Remove CMAKE_CHRPATH lookup from CMakeFindBinUtils - Remove CMAKE_USE_CHRPATH option since this should always work
* ENH: Cleanup chrpath feature by not displaying exe format or placing ↵Brad King2008-01-221-1/+1
| | | | non-advanced options in cache.
* STYLE: fix infinished commentAlexander Neundorf2008-01-161-1/+2
| | | | Alex
* BUG: according to the binutils mailing list chrpath doesn't work when crossAlexander Neundorf2008-01-151-2/+3
| | | | | | compiling Alex
* ENH: check the magic code of the executable file to determine the executableAlexander Neundorf2008-01-021-4/+4
| | | | | | | | | | file format. Tested for ELF on x86 Linux, COFF and Mach-O prepared but commented out since I don't have such systems available. Please have a look a CMakeDetermineCompilerId.cmake and enable the test for them too. Only add the option for using chrpath if the executable format is ELF Alex
* BUG: make CMAKE_USE_CHRPATH a simple variable instead an option, since anAlexander Neundorf2007-12-191-1/+1
| | | | | | | option is not scriptable and so breaks the toolchain test or maybe option() should be made scriptable ? Alex
* ENH: add support for chrpath, so the RPATH in ELF files can be changed whenAlexander Neundorf2007-12-181-0/+10
| | | | | | | | | | | | | | | | | | installing without having to link the target again -> can save a lot of time chrpath is handled very similar to install_name_tool on the mac. If the RPATH in the build tree file is to short, it is padded using the separator character. This is currently disabled by default, it can be enabled using the option CMAKE_USE_CHRPATH. There are additional checks whether it is safe to enable it. I will rework them and use FILE(READ) instead to detect whether the binaries are actually ELF files. chrpath is available here http://www.tux.org/pub/X-Windows/ftp.hungry.com/chrpath/ or kde svn (since a few days): http://websvn.kde.org/trunk/kdesupport/chrpath/ Alex
* STYLE: don't use an extra file to generate CMakeSystem.cmake but insteadAlexander Neundorf2007-08-151-1/+11
| | | | | | | configure the toolchain file into it if required -also search for nm, objdump and objcpy, so these can be used in macros Alex
* COMP: with visual studio it's no error if link isn't foundAlexander Neundorf2007-07-021-4/+0
| | | | Alex
* BUG: with MS Visual Studio currently there is no compiler id, so check theAlexander Neundorf2007-07-021-3/+10
| | | | | | generator too Alex
* BUG: always search for ar, ranlib, etc. except under MSVC -> this should fix ↵Alexander Neundorf2007-05-211-14/+18
| | | | | | | | the mingw fortran test -also generate the fortran test with the kdevelop generator Alex
* COMP: if a new cmake runs on an old build tree, set CMAKE_LINKER to link to ↵Alexander Neundorf2007-05-181-0/+4
| | | | | | make it link Alex
* ENH: fail if install_name_tool wasn't foundAlexander Neundorf2007-05-171-0/+4
| | | | Alex
* ENH: merge CMake-CrossCompileBasic to HEADAlexander Neundorf2007-05-171-0/+52
-add a RESULT_VARIABLE to INCLUDE() -add CMAKE_TOOLCHAIN_FILE for specifiying your (potentially crosscompiling) toolchain -have TRY_RUN() complain if you try to use it in crosscompiling mode (which were compiled but cannot run on this system) -use CMAKE_EXECUTABLE_SUFFIX in TRY_RUN(), probably TRY_RUN won't be able to run the executables if they have a different suffix because they are probably crosscompiled, but nevertheless it should be able to find them -make several cmake variables presettable by the user: CMAKE_C/CXX_COMPILER, CMAKE_C/CXX_OUTPUT_EXTENSION, CMAKE_SYSTEM_NAME, CMAKE_SYSTEM_INFO_FILE -support prefix for GNU toolchains (arm-elf-gcc, arm-elf-ar, arm-elf-strip etc.) -move ranlib on OSX from the file command to a command in executed in cmake_install.cmake -add support for stripping during install in cmake_install.cmake -split out cl.cmake from Windows-cl.cmake, first (very incomplete) step to support MS crosscompiling tools -remove stdio.h from the simple C program which checks if the compiler works, since this may not exist for some embedded platforms -create a new CMakeFindBinUtils.cmake which collects the search fro ar, ranlib, strip, ld, link, install_name_tool and other tools like these -add support for CMAKE_FIND_ROOT_PATH for all FIND_XXX commands, which is a list of directories which will be prepended to all search directories, right now as a cmake variable, turning it into a global cmake property may need some more work -remove cmTestTestHandler::TryExecutable(), it's unused -split cmFileCommand::HandleInstall() into slightly smaller functions Alex