summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeCInformation.cmake
Commit message (Collapse)AuthorAgeFilesLines
* Compiler: Add infrastructure for detecting compiler wrappersChuck Atkins2015-12-071-0/+8
|
* Revert "Disable shared library support when compiler links statically" (#15855)Brad King2015-11-231-4/+0
| | | | | | | | In commit v3.4.0-rc1~18^2 (Disable shared library support when compiler links statically, 2015-09-30) we tried to detect when the compiler is not capable of linking shared libraries (possibly due to flags in use). However, the approach is not robust against flags like `-nostdlib`. Revert it for now pending another solution to the original problem.
* Disable shared library support when compiler links staticallyBrad King2015-09-301-0/+4
| | | | | | | | | When a user or a compiler wrapper adds '-static' to the compiler flags then it will always link static binaries. Detect this from the compiler id binary and disable TARGET_SUPPORTS_SHARED_LIBS. This will prevent projects from accidentally adding shared libraries when the toolchain does not support them. It also helps CMake avoid linking with flags that require shared libraries to be supported.
* Re-order 'ar' options 'cq' => 'qc'Brad King2015-09-091-1/+1
| | | | | | | | | | | The documetnation of binutils: https://sourceware.org/binutils/docs/binutils/ar-cmdline.html suggests to use the parameters "q" and "c" in this order ("q" is operation, and "c" is the modifier). Suggested-by: Дилян Палаузов <dilyan.palauzov@aegee.org>
* Factor an <INCLUDES> placeholder out of <FLAGS> in rule variablesBrad King2015-07-131-1/+1
| | | | | | | | | | | Teach the Makefile and Ninja generators to substitute for an <INCLUDES> placeholder instead of putting -I in <FLAGS>. Update our values for CMAKE_<LANG>_COMPILE_OBJECT, CMAKE_<LANG>_CREATE_ASSEMBLY_SOURCE, and CMAKE_<LANG>_CREATE_PREPROCESSED_SOURCE to place <INCLUDES> just before <FLAGS>.
* Support duplicate object names in large archives (#14874)Brad King2014-04-161-2/+2
| | | | | | | | | Generalize the change from commit 39d0ade0 (Windows-GNU: Support duplicate object names in large archives, 2014-04-14) to the default archive rules. These rules have used an incremental append approach since commit v2.8.0~1856 (Build large archives incrementally, 2008-08-04). Switch from "ar r" to "ar q" to be sure we always append objects instead of replacing them.
* Fix CMAKE_(C|CXX|Fortran)_STANDARD_LIBRARIES helpstrings (#14622)Brad King2013-12-031-1/+1
| | | | | | s/defalut/default/ Reported-by: Stephan Tolksdorf <st@quanttec.com>
* Make CMAKE_(C|CXX|Fortran)_<CONFIG> help strings more consistent (#14606)Brad King2013-12-021-2/+2
| | | | | Use consistent capitalization and write all words out in the cache entry descriptions.
* Fix CMAKE_(C|CXX|Fortran)_RELEASE helpstrings (#14606)Brad King2013-12-021-1/+1
| | | | | Remove the platform-specific description from the cache entry help strings for these variables.
* Quote ${CMAKE_<LANG>_COMPILER} while enabling a languageBrad King2013-10-221-1/+1
| | | | | | | | | | | | Even though this variable gets set to CMAKE_<LANG>_COMPILER-NOTFOUND when the compiler is not found, CMake<LANG>Compiler.cmake gets removed by cmGlobalGenerator::EnableLanguage so in try compiles the value is empty. Quote references to the variable in Modules/CMake(C|CXX|Fortran)Information.cmake Modules/CMakeDetermineCompilerId.cmake to avoid dropping arguments from commands that expect them.
* Remove CMake-language block-end command argumentsKitware Robot2012-08-131-22/+22
| | | | | | | | | | | | | | | | | 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-100/+100
| | | | | | | | | | | | | | | | | 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/ \+$//'
* Support building shared libraries or modules without soname (#13155)Modestas Vainius2012-04-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a boolean target property NO_SONAME which may be used to disable soname for the specified shared library or module even if the platform supports it. This property should be useful for private shared libraries or various plugins which live in private directories and have not been designed to be found or loaded globally. Replace references to <CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG> and hard-coded -install_name flags with a conditional <SONAME_FLAG> which is expanded to the value of the CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG definition as long as soname supports is enabled for the target in question. Keep expanding CMAKE_SHARED_LIBRARY_SONAME_${LANG}_FLAG in rules in case third party projects still use it. Such projects would not yet use NO_SONAME so the adjacent <TARGET_SONAME> will always be expanded. Make <TARGET_INSTALLNAME_DIR> NO_SONAME aware as well. Since -install_name is soname on OS X, this should not be a problem if this variable is expanded only if soname is enabled. The Ninja generator performs rule variable substitution only once globally per rule to put its own placeholders. Final substitution is performed by ninja at build time. Therefore we cannot conditionally replace the soname placeholders on a per-target basis. Rather than omitting $SONAME from rules.ninja, simply do not write its contents for targets which have NO_SONAME. Since 3 variables are affected by NO_SONAME ($SONAME, $SONAME_FLAG, $INSTALLNAME_DIR), set them only if soname is enabled.
* Load platform files that need to know the ABI when possibleBrad King2011-12-051-0/+6
| | | | | | | | Load platform files named in CMAKE_<lang>_ABI_FILES for each language once the ABI sizeof(void*) is known. During the first configuration this is after the test for working compiler and ABI detection checks. During later configurations the ABI information is immediately available because it has been saved in CMake<lang>Compiler.cmake.
* Merge topic 'relative-CMAKE_USER_MAKE_RULES_OVERRIDE'Brad King2011-01-261-5/+9
|\ | | | | | | | | a146e03 Fix relative CMAKE_USER_MAKE_RULES_OVERRIDE (#11725)
| * Fix relative CMAKE_USER_MAKE_RULES_OVERRIDE (#11725)Brad King2011-01-191-5/+9
| | | | | | | | | | | | | | | | | | In commit 295b5b60 (Honor CMAKE_USER_MAKE_RULES_OVERRIDE in try_compile, 2010-06-29) we started passing the value of this variable when building a try_compile project. If the variable contains a relative path it must be treated with respect to the file where it is first used. Ensure that the value is converted to a full path so that it is correctly referenced in the try_compile projects.
* | Allow platform files to set large archive rules (#11674)Brad King2011-01-101-3/+9
| | | | | | | | | | | | | | | | | | | | Commit aaa88d33 (Build large archives incrementally, 2008-08-04) hard-coded rules to create static archives incrementally in each language information file. Set each rule conditionally to allow compiler and platform information files to override the language default rules. Inspired-by: Harald Pohl <pohl.h@eppendorf.de>
* | Reset platform/compiler info status for each languageBrad King2010-09-281-0/+2
| | | | | | | | | | | | | | | | | | | | In each CMake<lang>Information.cmake file we use an _INCLUDED_FILE variable to track whether a compiler information file has been loaded. Reset this variable for each language. This fixes Fortran under VS generators with the Intel plugin. Previously the variable would be left set true from C and C++ and then Fortran would not load old-style files like Platform/Windows-ifort.
* | Modules: Fix spelling 'To distributed' -> 'To distribute'Todd Gamblin2010-08-091-1/+1
|/
* Use work-around from bug 4772 for C++ and FortranBrad King2009-10-061-6/+5
| | | | | | | | | | | | | | The commit "fix for bug 4772" added a work-around to CMakeCInformation for platform config files that put compiler information in the system file (like SunOS flags for GCC). This commit adds the same work-around for CXX and Fortran. It is necessary to support enabling these languages separately from C in other subdirectories. The commit "Avoid (Unix|Windows)Paths.cmake multiple include" added include blockers that prevent the files from multiple inclusion, so it is safe to include the system information files from every language. See issue #4772 and issue #9656.
* Convert CMake non-find modules to BSD LicenseBrad King2009-09-281-0/+13
| | | | | | | 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: Load platform-independent per-compiler filesBrad King2009-07-231-0/+6
| | | | | | | This teaches the language configuration modules to load per-compiler information for each language using the compiler id but no system name. They look for modules named "Compiler/<id>-<lang>.cmake". Such modules may specify compiler flags that do not depend on the platform.
* ENH: fix problem where rc language recursively included itself because ↵Bill Hoffman2008-10-141-1/+1
| | | | CMAKE_BASE_NAME was used from c compiler, do the same fix for other uses of CMAKE_BASE_NAME
* BUG: fix for bug 4772, enable_language should now work on linux with correct ↵Bill Hoffman2008-10-011-2/+12
| | | | flags
* ENH: Build large archives incrementallyBrad King2008-08-041-7/+5
| | | | | | Creation of archive libraries with the unix 'ar' tool should be done incrementally when the number of object files is large. This avoids problems with the command line getting too many arguments.
* ENH: fix init flags getting stuffed into the compile line by force.Bill Hoffman2008-04-211-5/+7
|
* ENH: Pass dependent library search path to linker on some platforms.Brad King2008-02-011-0/+4
| | | | | | | | | | | | | | | | - Move runtime path ordering out of cmComputeLinkInformation into its own class cmOrderRuntimeDirectories. - Create an instance of cmOrderRuntimeDirectories for runtime path ordering and another instance for dependent library path ordering. - Replace CMAKE_DEPENDENT_SHARED_LIBRARY_MODE with explicit CMAKE_LINK_DEPENDENT_LIBRARY_FILES boolean. - Create CMAKE_LINK_DEPENDENT_LIBRARY_DIRS boolean. - Create variables to specify -rpath-link flags: CMAKE_SHARED_LIBRARY_RPATH_LINK_<LANG>_FLAG CMAKE_EXECUTABLE_RPATH_LINK_<LANG>_FLAG - Enable -rpath-link flag on Linux and QNX. - Documentation and error message updates
* ENH: Implement linking with paths to library files instead of -L and -l ↵Brad King2008-01-221-0/+8
| | | | | | | | | | | | | | | | | separation. See bug #3832 - This is purely an implementation improvement. No interface has changed. - Create cmComputeLinkInformation class - Move and re-implement logic from: cmLocalGenerator::ComputeLinkInformation cmOrderLinkDirectories - Link libraries to targets with their full path (if it is known) - Dirs specified with link_directories command still added with -L - Make link type specific to library names without paths (name libfoo.a without path becomes -Wl,-Bstatic -lfoo) - Make directory ordering specific to a runtime path computation feature (look for conflicting SONAMEs instead of library names) - Implement proper rpath support on HP-UX and AIX.
* ENH: Create COMPILE_DEFINITIONS property for targets and source files. ↵Brad King2008-01-141-1/+1
| | | | Create <config>_COMPILE_DEFINITIONS property as per-configuration version. Add Preprocess test to test the feature. Document limitations on Xcode and VS6 generators.
* BUG: fix for bug 6167 get rid of extra space in flagsBill Hoffman2007-12-171-1/+4
|
* ENH: remove support for presetting CMAKE_SYSTEM_INFO_FILE,Alexander Neundorf2007-07-021-20/+14
| | | | | | | | | | | | | | | | CMAKE_SYSTEM_AND_C_COMPILER_INFO_FILE, CMAKE_SYSTEM_AND_CXX_COMPILER_INFO_FILE, CMAKE_SYSTEM_AND_C_COMPILER_AND_PROCESSOR_INFO_FILE and CMAKE_SYSTEM_AND_CXX_COMPILER_AND_PROCESSOR_INFO_FILE Instead of presetting these variables to arbitrary filenames, users should set up CMAKE_SYSTEM_NAME and the compilers correctly and also create a Platform/ directory so these files will all follow the official cmake style, which should make it easier to understand and debug project which have their own platform/toolchain support files. -remove support for a suffix to MS crosscompilers, since this is not (yet) supported by cmake and might confuse users Alex
* ENH: first include the processor specific file, then the compiler file, thisAlexander Neundorf2007-06-121-11/+12
| | | | | | | way the specific hardware file can set variables which can be used in the toolchain rules (like CMAKE_C_COMPILE_OBJECT etc.) Alex
* ENH: split cmGlobalGenerator::SetLanguageEnabled() in two parts, where theAlexander Neundorf2007-06-111-0/+8
| | | | | | | | second part copies the values from the cmake variables into internal maps. So this can now be done after the compiler-specific information has been loaded, which can now overwrite more settings. Alex
* ENH: also load a processor-specific file if existsAlexander Neundorf2007-06-051-12/+29
| | | | | | | -also try the basename file if the compiler id file doesn't exist -don't rely so much on the CMAKE_TOOLCHAIN_FILE Alex
* ENH: merge CMake-CrossCompileBasic to HEADAlexander Neundorf2007-05-171-12/+15
| | | | | | | | | | | | | | | | | | | | | | | | -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
* ENH: Merging CompilerId updates from branch CMake-Modules-CompilerId to the ↵Brad King2007-05-031-0/+5
| | | | main tree. Changes between CMake-Modules-CompilerId-mp1 and CMake-Modules-CompilerId-mp2 are included.
* ENH: Split CMAKE_STANDARD_LIBRARIES into per-language variables ↵Brad King2006-04-111-0/+6
| | | | CMAKE_<lang>_STANDARD_LIBRARIES. This is needed to get programmable language support working with Visual Studio generators. It makes sense anyway.
* ENH: add support for language flags at rule expansion timeBill Hoffman2006-03-061-1/+1
|
* ENH: fix for bug 2921, move _OVERRIDE variable to a better position to allow ↵Bill Hoffman2006-03-021-0/+15
| | | | changing _INIT variables
* ENH: fix spelling errorsBill Hoffman2006-02-271-1/+1
|
* ENH: add documentation support for modulesBill Hoffman2005-12-141-0/+1
|
* ENH: add a fix for VTK on the mac and a way to fix some projects with a ↵Bill Hoffman2005-09-071-4/+0
| | | | single file in the cmake modules directory
* ENH: make sure flags set in CC or CXX environment variables stay with the ↵Bill Hoffman2005-07-201-1/+1
| | | | compiler
* ENH: move flags next to compiler, so if env contains compiler and some flag, ↵Bill Hoffman2005-07-201-2/+2
| | | | they stay together
* ENH: major changes to support addition of languages from cmake modules ↵Bill Hoffman2004-09-221-3/+0
| | | | directory.
* ENH: more uniform approach to enable language, one step closer to being able ↵Bill Hoffman2004-08-261-0/+115
to enable a language without modifing cmake source code