summaryrefslogtreecommitdiffstats
path: root/Modules/Platform
Commit message (Collapse)AuthorAgeFilesLines
* OpenBSD: Work-around static/runtime linker inconsistencyChuck Atkins2010-03-261-0/+16
| | | | | | | Detect the runtime linker's search path and add to the compile time linker's search path. This is needed because OpenBSD's static linker does not search for shared library dependencies in the same places as the runtime linker.
* Teach CMake how to work with G95 on mingw.Bill Hoffman2010-03-231-0/+1
|
* Suppress GNU flag -fPIC on WindowsBrad King2010-02-191-0/+2
| | | | | | | | Commit "Modernize GNU compiler info on Windows" (2009-12-02) reorganized GNU flags on Windows but let -fPIC slip through for compilation of objects in shared libraries. While this flag is valid on most GNU compiler platforms we need to suppress it in Windows-GNU.cmake just as we already do in CYGWIN-GNU.cmake.
* Fix issue #10155 - default value of CMAKE_OSX_DEPLOYMENT_TARGET should ↵David Cole2010-01-294-31/+38
| | | | always be the empty string. When the value of CMAKE_OSX_DEPLOYMENT_TARGET is the empty string, the -mmacosx-version-min flag should not show up on the compiler command line. The logic for selecting default value of CMAKE_OSX_SYSROOT is orthogonal to and independent of the value of the deployment target. The default value for CMAKE_OSX_SYSROOT is the SDK that corresponds to the current version of Mac OSX on which cmake is running.
* Do not export all symbols from DLLs on CygwinBrad King2010-01-211-2/+3
| | | | | | | | | | In commit "use export all symbols on cygwin" (2003-01-21) we started passing -Wl,--export-all-symbols when linking shared libraries. Now cygwin exports all symbols automatically if no symbols are explicitly exported. When symbols are explicitly exported we want to honor that narrow interface. Therefore this flag should not be passed. Change based on patch from issue #10122.
* Fix CMAKE_DL_LIBS on CygwinBrad King2010-01-211-1/+0
| | | | | | | | The variable should contain the name of a library needed to link the symbol equivalent to dlopen. On Cygwin no special library is needed, and certainly not "gdi32". Change based on patch from issue #10122.
* Add PathScale shared library flags on LinuxBrad King2010-01-214-0/+31
| | | | | | | | We add platform-specific compiler information files Platform/Linux-PathScale-<lang>.cmake to enable -fPIC and -shared flags for shared libraries.
* Do not find cyg*.dll on CygwinBrad King2010-01-131-2/+2
| | | | | | | | | | | | | | While Cygwin supports linking directly to .dll files, the behavior is now discouraged. All Cygwin packages now provide import libraries of the form lib*.dll.a and CMake has built the import libraries for years. We believe it is now safe to stop explicitly searching for .dll files because their import libraries will always be available when the corresponding header files are available. Users can always set find_library cache entries to point at a .dll file by hand if they really must use one. Change based on patch from issue #10122.
* Search prefix /usr before root prefix /Brad King2010-01-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit "Find locally installed software first" made /usr/local the first prefix searched to be consistent with the Filesystem Hierarchy Standard: http://www.pathname.com/fhs/ The standard also implies that the root prefix "/" should not have any package or development files. The "/bin" and "/lib" directories should have only minimal contents to boot the system. No "/include" ever exists. This commit re-orders the search path prefix list from /usr/local / /usr to /usr/local /usr / to prefer package and development files over low-level system files. See issue #10136. On Cygwin /usr/lib == /lib and /usr/bin == /bin. This change also makes search results report locations as "/usr/..." instead of "/lib/...". See issue #10122.
* Restore -rdynamic in Linux build rulesBrad King2010-01-132-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | The commit "Drop -rdynamic from Linux build rules" removed default use of the flag on Linux. It was expected to be compatible because any project using plugins should set ENABLE_EXPORTS on its executables to export their symbols for use by the plugins in a cross-platform way. However, it is possible to build without ENABLE_EXPORTS and load plugins that do not link to any symbols from the executable explicitly. These plugins may need to see RTTI and other executable symbols needed by the language implementation. Executables using such plugins were broken by the change. If we want to remove the -rdynamic flag in the future we should do so in a compatible way. At that time we should also remove equivalent flags on other platforms (like -bexpall on AIX). We will either need a policy or an explicit API to disable symbol exports on executables. The primary purpose of the above-mentioned commit was to avoid passing the -rdynamic flag to compilers on Linux that do not support it. In this commit we restore the flag but only on GNU and Intel compilers which are known to support it. See issue #9985.
* Create Linux GNU compiler flag consolidation macroBrad King2010-01-134-0/+28
| | | | | This macro will be used for GNU compiler flags that are specific to Linux but not to any language.
* Fix issue with SDK not matching initial deployment target chosen by setting ↵David Cole2009-12-231-31/+37
| | | | the MACOSX_DEPLOYMENT_TARGET environment variable. The problem was that we were setting the initial SDK value based on our own internal default value for deplyment target rather than the user's environment variable choice. The solution is to base the default value for the SDK on the deployment target variable after initially caching the deployment target... Every time I'm in this code I think I leave it cleaner, only to be proven otherwise. Let's give this one a whirl. Bleh.
* Fix issues #9959 and #9898 - do not set CMAKE_OSX_DEPLOYMENT_TARGET if ↵David Cole2009-12-151-14/+29
| | | | | | CMAKE_OSX_SYSROOT is set. Default to "" for CMAKE_OSX_DEPLOYMENT_TARGET if CMAKE_OSX_SYSROOT is set. Also, add new error message to detect the case where there is a deployment target, but no SDK has been set. Fix args to STRING REGEX call so that it works even if _sdk_path variable is empty inside sanity check function.
* Remove GNU-specific flags from Linux.cmakeBrad King2009-12-044-7/+0
| | | | | | | | We remove the shared library compile/link flags "-fPIC" and "-shared" because they are not provided by all compilers on Linux. This allows us to drop code from the Linux-XL-*.cmake files that erases the bad flags. All other supported compilers already provide their correct flags for Linux in their own platform information files.
* Generalize support for Portland Group CompilerBrad King2009-12-044-12/+31
| | | | | | | | | | | | | | | We factor flags from Platform/Linux-PGI-Fortran.cmake into language independent helper modules Compiler/PGI.cmake Platform/Linux-PGI.cmake and invoke the macros from Compiler/PGI-<lang>.cmake Platform/Linux-PGI-<lang>.cmake This enables general support for the PGI compilers.
* Remove duplicate info from Linux SunPro info filesBrad King2009-12-043-6/+0
| | | | | The CMAKE_DL_LIBS variable is set platform-wide by Linux.cmake so we do not need to duplicate it in Linux-SunPro-<lang>.cmake files.
* Consolidate Linux Intel compiler informationBrad King2009-12-044-28/+38
| | | | | We consolidate duplicate code from Platform/Linux-Intel-<lang>.cmake files into a macro defined in Platform/Linux-Intel.cmake.
* Fix GNU C and Fortran flags on SunOSBrad King2009-12-042-1/+3
| | | | | | | | | | | The commit "Split GNU compiler information files" intended to move GNU flags from the platform-wide Platform/SunOS.cmake module into Platform/SunOS-GNU-<lang>.cmake using a helper module Platform/SunOS-GNU.cmake to consolidate flags. However, it accidentally put Fortran flags in the C language module and left out the Fortran module altogether. This fixes those mistakes.
* Move GNU flags from SunOS.cmake to SunOS-GNU.cmakeBrad King2009-12-022-17/+9
| | | | | The GNU-specific link-type flags do not belong in the platform-wide file.
* Reduce duplication in Platform/<os>.cmake filesBrad King2009-12-0214-22/+0
| | | | | | | | | | | | | Several platform-wide linker flag variables are defined in Modules/Platform/<os>.cmake files for C and then copied by the Modules/CMake<lang>Information.cmake file for each language. We now use this approach for the variables CMAKE_EXE_EXPORTS_${lang}_FLAG CMAKE_SHARED_LIBRARY_SONAME_${lang}_FLAG CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS to avoid duplication for multiple languages in each platform file.
* Fix OS X dylib and module GNU flagsBrad King2009-12-024-0/+30
| | | | | | | | | | | The commit "Split GNU compiler information files" broke the settings of CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS and started using just "-shared" for them. This worked when tested on newer Mac machines, but older ones really need "-dynamiclib" and "-bundle" (which are the documented flags anyway).
* Modernize GNU compiler info on WindowsBrad King2009-12-026-98/+83
| | | | | | | | | | | | This moves GNU compiler info on Windows into new-style modules Platform/Windows-GNU-<lang>.cmake using language-independent helper module Platform/Windows-GNU.cmake to define macros consolidating the information.
* Split GNU compiler information filesBrad King2009-12-0227-152/+148
| | | | | | | | | | | | | | This moves GNU compiler flags into new-style modules Compiler/GNU-<lang>.cmake Platform/<os>-GNU-<lang>.cmake We use language-independent helper modules Compiler/GNU.cmake Platform/<os>-GNU.cmake to define macros consolidating the information.
* Drop -rdynamic from Linux build rulesBrad King2009-12-019-13/+0
| | | | | | | | | | | | | | | This is a GNU-specific option that should not be specified for all compilers on Linux. It tells the GNU compiler to pass -export-dynamic to the linker to export symbols from executables for use by plugins. Since we provide the ENABLE_EXPORTS target property to do the same thing in a cross-platform way, there is no need to pass -rdynamic always. Since the option is not useful for GNU tools and breaks other tools on Linux we simply remove it from CMAKE_SHARED_LIBRARY_LINK_<lang>_FLAGS. This also allows us to stop setting the variable in other Linux compiler files just to erase the bad flag. See issue #9985.
* Singly-quote target names for Watcom linkerBrad King2009-11-301-4/+4
| | | | | | | The Watcom tools do their own command-line parsing and do not accept double-quotes. Instead we single-quote the target output name when invoking wlink and other Watcom tools. This fixes support for spaces in the target output directory path when it is not under the build tree.
* Change the way 32/64 bit compiles are detected with MSVC and intel makefile ↵Bill Hoffman2009-11-202-31/+17
| | | | builds. Use the platform ID preprocessor approach.
* Fix flags for Intel Fortran on WindowsBrad King2009-10-291-3/+3
| | | | | | | | | | | | | | We replace "/MD" with ifort-specific flags as follows: /MD -> /threads /libs:dll /MDd -> /threads /libs:dll /dbglibs We also enable the "/MD" equivalent for all Fortran configurations. Previously multithreaded dll runtimes were used for release builds and threaded static runtimes for debug builds. For mixed Fortran C/C++ projects, this led to link warnings for Debug but not for Release. See issue #8744.
* Fix Intel Fortran SHARED libraries on LinuxBrad King2009-10-271-1/+1
| | | | | The Intel Fortran compiler needs options '-i_dynamic' and '-nofor_main' to create shared libraries on Linux (for at least one architecture).
* Fix Intel and MinGW Fortran DLL import librariesBrad King2009-10-262-3/+4
| | | | | | | | | We add Intel and MinGW Fortran linker options to create the import library portion of a DLL. This allows other binaries to link to a Fortran DLL. We also update the Fortran test to use a .def file to specify exports since there is no __declspec(dllexport) markup syntax in Fortran.
* Split Borland compiler information filesBrad King2009-10-084-128/+125
| | | | | | | | | | | This commit re-writes Borland compiler build rules. We split the rules into modern <os>-<id>-<lang> information modules but share a common macro between languages to avoid duplication. We also address a bug in the previous rules that would build some target types against the static Borland runtime and others against the shared Borland runtime in one build tree. Now we always use the shared runtime as is the default in the rules for MS tools.
* Teach intel compiler on windows to place .lib files and .pdb files.Bill Hoffman2009-10-051-2/+2
|
* Teach intel compiler on windows to place .lib files and .pdb files.Bill Hoffman2009-10-051-1/+7
|
* Avoid (Unix|Windows)Paths.cmake multiple includeBrad King2009-10-052-0/+20
| | | | | | | | | | Block multiple inclusion because "Modules/CMakeCInformation.cmake" includes "Platform/${CMAKE_SYSTEM_NAME}" even though the generic module "CMakeSystemSpecificInformation.cmake" already included it. The extra inclusion is a work-around to address issue #4772 without intrusive platform file changes. Once those changes are made the work-around and these include blockers can be removed. See issue #9656.
* Add copyright notice to (Unix|Windows)Paths.cmakeBrad King2009-10-052-0/+28
| | | | | This commit adds our copyright notice to these non-trivial platform modules.
* Find locally installed software firstBrad King2009-10-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | This commit re-orders the search path prefix list from / /usr /usr/local to /usr/local / /usr so that locally-installed software is preferred. This makes the search consistent with the Filesystem Hierarchy Standard: http://www.pathname.com/fhs/ See issue #9657.
* Support GNU/kFreeBSDBrad King2009-10-051-11/+1
| | | | | | | | | | | | | GNU/kFreeBSD = FreeBSD kernel + userspace with glibc. Linux.cmake doesn't contain anything too OS specific, so we can forward to it. Here are outputs of /bin/uname on author's machine: uname -p ==> i386 uname -o ==> GNU/kFreeBSD uname -s ==> GNU/kFreeBSD uname -r ==> 5.4-1-686 Patch from Modestas Vainius. See issue #9659.
* Create INTERPROCEDURAL_OPTIMIZATION build featureBrad King2009-10-023-3/+9
| | | | | | | | This commit creates target and directory properties to enable the Intel interprocedural optimization support on Linux. Enabling it adds the compiler option '-ipo' and uses 'xiar' to create archives. See issue #9615.
* Fix typo in Intel xiar search codeBrad King2009-10-021-3/+3
| | | | This renames the variable '_intel_xair_hints' to '_intel_xiar_hints'.
* Split XL compiler information filesBrad King2009-09-3010-32/+21
| | | | | | This moves platform-independent XL compiler flags into separate "Compiler/XL-<lang>.cmake" modules. Platform-specific flags go in "Platform/<os>-XL-<lang>.cmake" modules.
* Fix default install prefix on HaikuBrad King2009-09-301-0/+5
| | | | | | | | Since Haiku does not have /usr (and therefore /usr/local), this commit changes the default install prefix to the equivalent directory of /boot/common. See issue #9607.
* Fix shared library creation flag for XL on LinuxBrad King2009-09-293-1/+3
| | | | See issue #9617.
* Fix check for -isysroot on OS XBrad King2009-09-194-14/+22
| | | | | | | | | | | Previously we checked for this flag by parsing the version number of GCC out of 'gcc --version', but this is not reliable because the format can vary greatly. Now we run 'gcc -v --help' and look for '-isysroot' in the list of options. We also now store the result on a per-language basis in the per-compiler info file "CMake<LANG>Compiler.cmake". This is necessary to make it accessible from try-compile projects so that they generate correctly.
* Add detection of gcc versions that do not support isysroot option and do not ↵Bill Hoffman2009-09-181-0/+14
| | | | use it for them.
* Fix for bug #9466. Change the implementation of OSX arch lists. If no ↵Bill Hoffman2009-09-171-5/+1
| | | | ARCHs are specified by the user then no flags are set. We no longer use CMAKE_OSX_ARCHITECTURES_DEFAULT.
* Fix XL C++ compiler flags on LinuxBrad King2009-09-162-0/+6
| | | | | | | | In Platform/Linux.cmake we add GNU flags as default for the platform which breaks non-GNU compilers. Later we should refactor these flag files to put compiler-specific flags only in files loaded for each compiler. Until then this commit fixes the XL C++ compiler flags on Linux by erasing the GNU flags. See issue #9469.
* Add support for embeded manifests for Intel C/C++/Fortran compilersBill Hoffman2009-09-012-2/+30
|
* Add a module to determine if the intel linker supports manifest creationBill Hoffman2009-09-011-0/+17
|
* Move /MANIFEST flag into -E vs_link. This is so it can be used by the intel ↵Bill Hoffman2009-09-011-1/+1
| | | | compilers without having to specifiy it in the intel compiler files
* Use Intel for Linux flags only on LinuxBrad King2009-09-014-0/+36
| | | | | | The commit "Split Intel compiler information files" moved some Linux specific flags into the platform-independent Intel compiler info files. This moves them back.
* Split SunPro compiler information filesBrad King2009-08-215-111/+0
| | | | | | This moves platform-independent SunPro compiler flags into separate "Compiler/SunPro-<lang>.cmake" modules. Platform-specific flags are left untouched.