Commit Graph

18 Commits

Author SHA1 Message Date
Brad King b41ad3b399 Teach find_(library|package) about Linux multiarch (#12037)
Implement support for multiarch as specified here:

  http://wiki.debian.org/Multiarch
  https://wiki.ubuntu.com/MultiarchSpec

Detect the <arch> part of <prefix>/lib/<arch> from the implicit library
search path from each compiler to set CMAKE_<lang>_LIBRARY_ARCHITECTURE.
Define CMAKE_LIBRARY_ARCHITECTURE using one of these values (they should
all be the same).  Teach the find_library and find_package commands to
search <prefix>/lib/<arch> whenever they would search <prefix>/lib.
2011-06-08 10:04:44 -04:00
Brad King 58c73c43f6 Detect Fortran target architecture on Windows
Commit 4430bccc (Change the way 32/64 bit compiles are detected with
MSVC and intel, 2009-11-19) added detection of the target processor to C
and CXX language builds with MS and Intel tools.  Do the same for Intel
Fortran for Windows (ifort).  Use /machine:<arch> to link executables.
2010-12-16 09:33:06 -05:00
Brad King 0457d53151 Use Fortran ABI detection results conservatively
We set CMAKE_Fortran_SIZEOF_DATA_PTR in the Fortran compiler information
file after detecting the compiler ABI.  However, since Fortran does not
really have pointers, the preprocessor-based detection is unreliable.
The result is needed to set CMAKE_SIZEOF_VOID_P only for Fortran-only
projects because the value can come from C or C++ compilers otherwise.
Therefore when CMAKE_SIZEOF_VOID_P is available from another language we
should defer to it.
2010-05-05 17:46:29 -04:00
Brad King 6c1e24276f Detect Fortran ABI Information
Implement Fortran 32/64-bit ABI detection on some platforms.  We need to
set CMAKE_SIZEOF_VOID_P correctly in Fortran-only projects so that the
find_library() command knows whether to look for 64-bit binaries.  We
also detect ELF binaries to enable RPATH replacement.  See issue #10119.
2010-01-12 09:38:13 -05:00
Brad King 6843448379 Pass Fortran90 test result to try-compile
This stores CMAKE_Fortran_COMPILER_SUPPORTS_F90 in the Fortran compiler
information file CMakeFiles/CMakeFortranCompiler.cmake instead of in
CMakeCache.txt.  This file makes the result available to try-compile
projects.
2009-07-30 13:46:51 -04:00
Brad King 07ea19ad1f ENH: Implicit link info for C, CXX, and Fortran
This teaches CMake to detect implicit link information for C, C++, and
Fortran compilers.  We detect the implicit linker search directories and
implicit linker options for UNIX-like environments using verbose output
from compiler front-ends.  We store results in new variables called

  CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
  CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES

The implicit libraries can contain linker flags as well as library
names.
2009-07-23 10:07:25 -04:00
Brad King 2a06c660bf ENH: Patch from Maik to add more fortran extensions. 2008-03-05 15:55:21 -05:00
Alexander Neundorf 021ceea1b0 ENH: second try for handling the linker language with integer priority values (returning a pointer to a string on the stack is no good idea)
Alex
2007-07-12 08:37:10 -04:00
Alexander Neundorf 16705a3e87 COMP: revert last commit for now, broke Visual Studio
Alex
2007-07-11 17:29:27 -04:00
Alexander Neundorf bea1a5de77 ENH: CMAKE_<LANG>_LINKER_PREFERENCE is now an integer priority, not a
two-step priority (None or Prefered)
Current order: ASM 0, C 10, Fortran 20, CXX 30, Java 40
This is the same order as automake choses:
http://www.gnu.org/software/automake/manual/html_node/How-the-Linker-is-Chosen.html

This change should be backward compatible:
if there is a project using fortran and CXX, they had to set the
LINKER_LANGUAGE explicitely, otherwise cmake complained (but still generated
the project files). Explicitely setting the linker language still overrides
automatic detection.
If somebody has a custom language for cmake and the PREFERENCE starts with
"P", its changed to 100, which gives it preference over all other languages
(except the other custom languages which have also "Prefered"). "None" is
converted to 0.

Alex
2007-07-11 16:22:04 -04:00
Brad King 44ab336a0c ENH: Merging CompilerId updates from branch CMake-Modules-CompilerId to the main tree. Changes between CMake-Modules-CompilerId-mp1 and CMake-Modules-CompilerId-mp2 are included. 2007-05-03 08:24:32 -04:00
Andy Cedilnik 1cf4d146fc ENH: Merge debian changes. Support more fortran extensions 2006-07-04 11:06:38 -04:00
Bill Hoffman b8b298104b ENH: make sure flags set in CC or CXX environment variables stay with the compiler 2005-07-20 15:44:55 -04:00
Bill Hoffman 36dd18efce ENH: stuff to keep compiler tests from re-running all the time 2005-01-20 12:30:03 -05:00
Bill Hoffman 4cf0f5b5ca BUG: fix GNU check variable and add new variables used by enable language 2004-09-22 08:50:43 -04:00
Bill Hoffman c2ef51e181 ENH: define language extensions in cmake files and not hard coded, also fix trycompile problem 2004-09-03 12:03:41 -04:00
Bill Hoffman 66a08c10e5 ENH: more uniform approach to enable language, one step closer to being able to enable a language without modifing cmake source code 2004-08-26 14:55:55 -04:00
Bill Hoffman 9655299f08 ENH: initial fortran support 2004-08-06 14:51:41 -04:00