Commit Graph

2013 Commits

Author SHA1 Message Date
Brad King 4debb7ac69 Bias Fortran compiler search with C/C++ compilers
When CMAKE_Fortran_COMPILER and ENV{FC} are not defined CMake searches
for an available Fortran compiler.  This commit teaches the search code
to look for compiler executables next to the C and C++ compilers if they
are already found.  Furthermore, we bias the compiler executable name
preference order based on the vendor of the C and C++ compilers, which
increases the chance of finding a compatible compiler by default.
2009-09-09 16:39:47 -04:00
David Cole 6149e8f7e8 Missed another CMAKE_CFG_INTDIR reference in the previously previous commit. 2009-09-08 17:28:49 -04:00
David Cole 883338584f Missed a CMAKE_CFG_INTDIR reference in the previous commit. 2009-09-08 16:11:19 -04:00
Brad King fd47a2ae96 Drop old CMake "build settings" export/import
The CMakeExportBuildSettings and CMakeImportBuildSettings modules used
to export compiler paths and flags from one project and import them into
another.  The import process would force the settings on the including
project.

Forcing settings helped long ago when compiler ABIs changed frequently
but is now just a nuisance.  We've deemed the behavior harmful so this
commit simply removes it.  The modules and macros now error out if
included or called from a project that requires CMake 2.8 or higher.
2009-09-08 15:55:41 -04:00
David Cole 002ae925c3 Use more verbose/descriptive names for the "public API" functions in the ExternalProject.cmake module. Follow the cmake function naming convention, using a ModuleFileName_ prefix. Locate stamp files under a CMAKE_CFG_INTDIR subdir of the stamp dir so that debug and release builds have separate stamp files for Visual Studio builds. If no CMAKE_GENERATOR argument is given to ExternalProject_Add, default to using the parent project's cmake generator. 2009-09-08 15:37:15 -04:00
David Cole b71332914f Oops. Close strings with double quotes. Where they're supposed to be. 2009-09-04 18:19:06 -04:00
David Cole 5655ac46f0 Add MPICH2 and Microsoft HPC paths, add paths to find mpiexec. Now it works better automatically on Windows. Thanks to Dave Partyka for developing the patch. 2009-09-04 18:02:05 -04:00
Ken Martin f686dbecb6 some white space fixes for the book 2009-09-03 15:29:29 -04:00
David Cole 5624be360e Add test step to ExternalProject builds. Rename SVN_TAG to SVN_REVISION since it is a more accurate name. 2009-09-03 12:11:14 -04:00
Zach Mullen 69fd641adb Fixed ctest output where max test index is not the same width as the total number of tests. Also some preliminary changes for batching ctest jobs 2009-09-02 10:08:40 -04:00
Bill Hoffman 8710cc6422 Add support for embeded manifests for Intel C/C++/Fortran compilers 2009-09-01 16:33:51 -04:00
Bill Hoffman 76d059e3fb Add a module to determine if the intel linker supports manifest creation 2009-09-01 16:23:07 -04:00
Clinton Stimpson d6e8ffa927 use -o flag instead of > for qdbuscpp2xml 2009-09-01 15:21:06 -04:00
Bill Hoffman e9a170b108 Move /MANIFEST flag into -E vs_link. This is so it can be used by the intel compilers without having to specifiy it in the intel compiler files 2009-09-01 14:33:26 -04:00
Brad King 2eca4dd2d1 Use Intel for Linux flags only on Linux
The commit "Split Intel compiler information files" moved some Linux
specific flags into the platform-independent Intel compiler info files.
This moves them back.
2009-09-01 13:55:13 -04:00
Brad King dc78838737 Fix FortranCInterface_VERIFY for non-C++ case
The verification program entry point (main) is defined in a C source
file, so the C compiler should be used to link when only Fortran and C
are involved.  The C++ compiler should still be used when the CXX option
is enabled.
2009-09-01 13:03:12 -04:00
Brad King 78160cee6e Make FortranCInterface_VERIFY verbose on failure
We enable verbose build output in the try_compile of the simple project.
This makes valuable information available in the case of failure.
2009-09-01 08:52:43 -04:00
Will Dicharry ea34662053 Fixed link order dependence in FindHDF5 module for static link. 2009-08-31 18:18:34 -04:00
Will Dicharry 71ff183b5b In FindHDF5, added C library names to CXX search libraries. 2009-08-31 10:32:08 -04:00
David Cole 1171bcfc69 Add missing argument to _ep_write_downloadfile_script. 2009-08-26 06:52:43 -04:00
Will Dicharry c9686f62af Fixed HDF5 Find module error that caused no list to be passed into remove duplicates when HDF5 is not found. 2009-08-24 13:24:57 -04:00
Will Dicharry e6734068ef Add HDF5 find module and select_library_configurations module. 2009-08-24 12:04:35 -04:00
Brad King a9be85da2e Create FortranCInterface_VERIFY function
This function builds a simple test project using a combination of
Fortran and C (and optionally C++) to verify that the compilers are
compatible.  The idea is to help projects report very early to users
that the compilers specified cannot mix languages.
2009-08-24 08:49:35 -04:00
Brad King 14f7a043e3 Teach FortranCInterface to load outside results
We split the main detection logic into a Detect.cmake support module and
load it only when detection results are not already available.  This
allows results computed by the main project to be used in try-compile
projects without recomputing them.  The call to try_compile() need only
to pass FortranCInterface_BINARY_DIR through the CMAKE_FLAGS option.
2009-08-24 08:49:07 -04:00
Brad King 9ee0f9801a Split SunPro compiler information files
This moves platform-independent SunPro compiler flags into separate
"Compiler/SunPro-<lang>.cmake" modules.  Platform-specific flags are
left untouched.
2009-08-21 10:32:26 -04:00
Brad King 2ce6a7d0fb Split Intel compiler information files
This moves platform-independent Intel compiler flags into separate
"Compiler/Intel-<lang>.cmake" modules.  Platform-specific flags are
left untouched.
2009-08-21 09:54:42 -04:00
Brad King f64f9940af Teach FortranCInterface to verify languages
This module requires both C and Fortran to be enabled, so error-out if
they are not.
2009-08-20 16:21:53 -04:00
Philip Lowman 4bf4cbd8a2 Add Boost 1.39 & 1.40. Move ${Boost_INCLUDE_DIR}/lib to front of library search. 2009-08-19 22:28:46 -04:00
David Cole 0470a0c1ad Remove DownloadFile.cmake and UntarFile.cmake from the Modules directory. Put functionality directly into ExternalProject.cmake itself so that these modules do not end up in the upcoming release of CMake. 2009-08-19 12:19:12 -04:00
Philip Lowman 232b14f488 Find module for the Bullet physics engine 2009-08-16 23:07:15 -04:00
Philip Lowman c577608958 A find module for the Google C++ Testing Framework 2009-08-16 22:12:04 -04:00
Philip Lowman dac3903793 Checking in the FindFLEX.cmake & FindBISON.cmake attached to Issue #4018 after some minor improvements
* Improved examples
* Switched to FindPackageHandleStandardArgs
* Cleaned up indentation
* Sanitized else()/endif() blocks
2009-08-13 00:11:23 -04:00
Philip Lowman 5905f8f6c0 Fixes Issue #8994 2009-08-12 22:40:56 -04:00
Philip Lowman 1cde761faf Find module for GnuTLS, the GNU Transport Layer Security library (Issue #9228) 2009-08-12 22:25:31 -04:00
Philip Lowman fe18d13f79 Improved error output and documentation
* Fixed errant output when version number not found
* Improved error output when REQUIRED is passed
* Improved docs and example
2009-08-12 21:58:14 -04:00
Brad King 45313dc943 Quote the target name for Borland tlib tool
The Borland librarian tool "tlib" requires that the output target name
be quoted if it contains the character '-' (and perhaps a few others).
This commit restores the use of the TARGET_QUOTED rule variable
replacement for this purpose.  Otherwise no static library can have a
'-' in its name.

This problem was exposed by the 'Testing' test when it builds the
pcStatic library with the '-dbg' suffix.
2009-08-12 09:09:41 -04:00
Brad King 115ecc5750 Teach compiler id about VisualAge -> XL rebranding
IBM rebranded its VisualAge compiler to XL starting at version 8.0.  We
use the compiler id "XL" for newer versions and "VisualAge" for older
versions.  We now also recognize the "z/OS" compiler, which is distinct
from XL.
2009-08-07 10:13:07 -04:00
Brad King 34c6588b6e Move flag to Compiler/VisualAge-Fortran module
The CMAKE_Fortran_DEFINE_FLAG value applies to the IBM Fortran compilers
on all platforms.  This moves the setting to the platform-independent
compiler information file.
2009-08-07 10:12:34 -04:00
Brad King ee7231c03f Use NetBSD to initialize OpenBSD configuration
We teach Modules/Platform/OpenBSD.cmake to load NetBSD first since the
platforms are so similar.  This enables RPATH support on OpenBSD.
2009-08-07 09:56:20 -04:00
Brad King f33bcd6c50 Teach FortranCInterface about g77 mangling
The old GNU g77 Fortran compiler uses the suffix '__' for symbols
containing an underscore in their name.
2009-08-06 07:53:41 -04:00
Brad King 8dd02cb78d Sort FortranCInterface global mangling symbols
This just cleans up the list ordering so more entries can be added while
keeping everything organized.
2009-08-06 07:53:32 -04:00
Brad King edcddb522c Cleanup FortranCInterface for PGI and GCC 4.2
This documents the purpose of the extra my_module_.c and mymodule.c
source files, and sorts the symbols.
2009-08-05 17:07:36 -04:00
Bill Hoffman 71287734a9 Teach FortranC interface for Intel, PGI, and gcc 4.2 2009-08-05 16:55:57 -04:00
David Cole 6e54b18b5d Remove AddExternalProject.cmake. ExternalProject.cmake supercedes/replaces it. 2009-08-05 15:39:41 -04:00
David Cole fe0b121da9 Overhaul GetPrerequisites and BundleUtilities: make fixup_bundle do something useful on Windows and Linux.
Formerly, fixup_bundle was useful only on the Mac for making standalone bundle applications that could be drag-n-drop moved to anyplace in the file system. fixup_bundle is not just for the Mac any more. It will now analyze executable files on Windows and Linux, too, and copy necessary non-system dlls to the same folder that the executable is in. This should work with dlls that you build as part of your build and also with 3rd-party dlls as long as you give fixup_bundle the right list of directories to search for those dlls. Many thanks to Clinton Stimpson for his help in ironing out the details involved in making this work.
2009-08-05 14:59:14 -04:00
Brad King 80f0201b37 Rewrite FortranCInterface module
This is a new FortranCInterface.cmake module to replace the previous
prototype.  All module support files lie in a FortranCInterface
directory next to it.

This module uses a new approach to detect Fortran symbol mangling.  We
build a single test project which defines symbols in a Fortran library
(one per object-file) and calls them from a Fortran executable.  The
executable links to a C library which defines symbols encoding all known
manglings (one per object-file).  The C library falls back to the
Fortran library for symbols it cannot provide.  Therefore the executable
will always link, but prefers the C-implemented symbols when they match.
These symbols store string literals of the form INFO:symbol[<name>] so
we can parse them out of the executable.

This module also provides a simpler interface.  It always detects the
mangling as soon as it is included.  A single macro is provided to
generate mangling macros and optionally pre-mangled symbols.
2009-08-05 13:40:29 -04: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 fcab87c9f8 Do not always propagate linker language preference
The commit "Consider link dependencies for link language" taught CMake
to propagate linker language preference from languages compiled into
libraries linked by a target.  It turns out this should only be done for
some languages, such as C++, because normally the language of the
program entry point (main) should be used.

We introduce variable CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES to tell
CMake whether a language should propagate its linker preference across
targets.  Currently it is true only for C++.
2009-07-30 10:59:37 -04:00
Brad King 35f36727c5 Set CMAKE_<LANG>_VERBOSE_FLAG variables for PGI
We set the variables to contain "-v", the verbose front-end output
option for PGI compilers.  This enables detection of implicit link
libraries and directories for these compilers.
2009-07-29 16:38:06 -04:00
Brad King 0ea43ee128 Set CMAKE_<LANG>_VERBOSE_FLAG variables for Intel
We set the variables to contain "-v", the verbose front-end output
option for Intel compilers.  This enables detection of implicit link
libraries and directories for these compilers.
2009-07-29 16:07:27 -04:00