summaryrefslogtreecommitdiffstats
path: root/Modules/Compiler/XL-CXX.cmake
Commit message (Collapse)AuthorAgeFilesLines
* Revert "specify language flag when source LANGUAGE property is set"Brad King2020-11-191-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Revert commit 74b1c9fc8e (Explicitly specify language flag when source LANGUAGE property is set, 2020-06-01, v3.19.0-rc1~722^2) and the lookup tables from its two immediate ancestors. The purpose of that change was to convert an explicit `LANGUAGE` source file property into an explicit language specification compiler flag like `-x c`. This seems reasonable since the property is documented as meaning "indicate what programming language the source file is". It is also needed to help compilers deal with non-standard source file extensions they don't recognize. However, some projects have been setting `LANGUAGE C` on `.S` assembler source files to mean "use the C compiler". Passing `-x c` for them breaks the build because the `.S` sources are not written in C. These projects should be updated to use `enable_language(ASM)`, for which CMake often chooses the C compiler as the assembler when using toolchains that support it (which would have to be the case for projects using the approach). Revert the change for now to preserve the old behavior for such projects. We can re-introduce it with a policy in a future version of CMake. Fixes: #21469 Issue: #14516, #20716
* CXX: Compile when possible with explicit `Cxx` language flag setRobert Maynard2020-06-091-3/+2
| | | | Issue: #14516, #20716
* XL: Add comment clarifying why we pretend it has full C++11/14 supportBrad King2020-03-311-0/+6
| | | | | | | | | | | | Since commit b0f46c48f6 (CompileFeatures: Now able to presume full language level support, 2019-03-06, v3.15.0-rc1~265^2~1) we pretend that the XL compiler has full C++11 and C++14 support so that projects specifying granular features will at least get the corresponding compiler mode. This is a work around for our lack of a full feature check table for this compiler that works in common cases. Add a comment explaining this. Issue: #20521
* XL: C++14 language level flags are only available on LinuxBrad King2020-03-311-1/+1
| | | | | | | | Since commit 458ea9d76c (XL: Add C++14 language level flags, 2019-04-15, v3.15.0-rc1~226^2) we use `-qlanglvl=extended1y` for C++14 with XL 16.1. However, that flag is only supported on a Linux host. Issue: #20521
* XL: Add C++14 language level flagsRobert Maynard2019-04-151-0/+5
|
* CompileFeatures: Now able to presume full language level supportRobert Maynard2019-04-091-0/+2
| | | | | | | | | Previously compilers that only supported the meta-level flags would not have any of the granular features listed. Now we presume that they have full support and enable all the features. Update granular feature tests to skip the actual compilation checks for the presumed features.
* XL: Remove overlap with the new XLClang compiler IDChuck Atkins2019-02-251-32/+7
| | | | | | | | | In commit 6555286c55 (XL: Add C and C++ language level flags, 2017-04-27, v3.9.0-rc1~184^2) we added support for both the traditional XL compiler and the Clang-based variant used on Linux. The latter is now handled by `Modules/Compiler/XLClang-{C,CXX}.cmake` using the `XLClang` compiler id. Drop the corresponding content from the traditional XL compiler modules.
* XL: Use common compiler macros for language standard defaultChuck Atkins2017-05-021-33/+20
|
* XL: Add C and C++ language level flagsChuck Atkins2017-04-281-1/+53
|
* XL: Fix the use of the -qhalt flag for varying OSsChuck Atkins2017-04-271-2/+1
| | | | | | | | | | | | | | The valid settings to pass to the IBM XL compiler for the -qhalt flag vary widely by language and platform. Based on existing documentation, the following table shows which error levels are valid to pass to -qhalt= since -qhalt=e is not always available. OS | xlc | xlC | xlf | ---------|-------|------------------ AIX | iwes | iw s | ilwesu | BlueGene | iwes | iwes | ilwesu | OS X | iwesu | iwesu | ilwesu | Linux | w | w | ilwesu |
* Honor CMAKE_<LANG>_FLAGS[_<CONFIG>]_INIT set in toolchain filesBrad King2016-07-061-3/+3
| | | | | | | | | | | | | | | | | | | | | | | Document these variables. Change our convention for setting these variables from: set(CMAKE_C_FLAGS_INIT "...") to string(APPEND CMAKE_C_FLAGS_INIT " ...") so that any value previously set by a toolchain file will be used. Automate the conversion with: sed -i 's/set *(\(CMAKE_\(C\|CXX\|Fortran\|RC\|ASM\|${[^}]\+}\)_FLAGS\(_[^_]\+\)\?_INIT \+"\)/string(APPEND \1 /' \ Modules/Compiler/*.cmake Modules/Platform/*.cmake and follow up with some manual fixes (e.g. to cases that already meant to append). Also revert the automated changes to contexts that are not protected from running multiple times.
* 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>.
* Convert CMake-language commands to lower caseKitware Robot2012-08-131-2/+2
| | | | | | | | | | | | | | | | | 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
* XL: Consolidate compiler flag informationBrad King2011-04-071-9/+4
| | | | | | Factor duplicate information out of Compiler/XL-<lang>.cmake modules into a macro in a new Compiler/XL.cmake module. Invoke it from the per-language files to produce the original settings.
* XL: Set C++ and Fortran flags consistently with CBrad King2011-04-071-0/+4
| | | | | | Since commit e1729238 (Add initial XL C compiler flags for safer builds, 2009-09-30) CMake sets the initial XL C flags to include "-qthreaded" and "-qhalt=e". Do the same for C++ and Fortran with this toolchain.
* Split XL compiler information filesBrad King2009-09-301-0/+11
| | | | | | 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.
* Teach compiler id about VisualAge -> XL rebrandingBrad King2009-08-071-0/+1
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.