Files
cmake/Tests/RunCMake/ParseImplicitIncludeInfo/data
Chuck Cranor ef8f237686 ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray fix
Add implicit include parser for PGI compiler ID.  PGI verbose output
for CXX differs from C and Fortran, so CXX is broken out into its own
case.  The C and Fortran compilers take "-YI,path" and "-Mnostdinc" to
change or disable the builtin include path.  The last arg on the command
line appears to override previous args (e.g. "-YI,path1 -YI,path2" will
set the path to "path2" ... the previous "-YI,path1" gets undone).
The CXX compiler verbose output reports with "-I" rather than "-stdinc"
for the built in path.  In addition with CXX "-Mnostdinc" does not
completely zero the include path (e.g. "#include <stdio.h>" still works
with "-Mnostdinc"... "-I/usr/include" still shows up in the verbose output).

Minor adjustments to get the SunPro parser to handle Fortran as well.

Fixes for Cray compiler support (Modules/Compiler/Cray-{C,CXX}.cmake):
The *_COMPILE_OPTION flags contain options like "-h c99,gnu" ...
these options need to be in double quotes (they are currently not).
Otherwise, cmake treats them as lists and tries to run the compiler
with "-h;c99,gnu" and fails when it is "Detecting C compile features"...
Also, the Cray-CXX.cmake contains "__compiler_cray(C)" instead of
"__compiler_cray(CXX)" -- this error prevents the correct VERBOSE
flags for CXX from being defined which prevents the implicit include
parser from running.

Add additional test cases for PGI and SunPro Fortran to the
Tests/RunCMake/ParseImplicitIncludeInfo area.
2019-01-29 07:48:03 -07:00
..

This directory contains sample input files for the implicit include
directories parser for testing.  For each configuration there is one
".input" file and one ".output" file.

To generate ".input" files for a system, create a temporary build
directory and chdir to it.  Then run cmake pointing to this directory.
The CMakeLists.txt file here will generate ".input" files in your
build directory.  The default set of languages is C and CXX.  This
can be changed with -DLANGUAGES=language_list.  For example:
-DLANGUAGES=Fortran will generate Fortran parser input.

The ".output" files should be generated by hand from the input files.
The test will compare the parser output to the manually generated
".output" file.  The two should match.

For compilers that support "-nostdinc"-like flags, you can generate
a test for this with a command like:
cmake -DUNAME=netbsd_nostdinc \
  -DCMAKE_C_FLAGS=-nostdinc -DCMAKE_CXX_FLAGS=-nostdinc .

Here is an example for testing the XL compiler with both -I and nostdinc:

env CC=xlc CXX=xlC cmake -DUNAME=linux_nostdinc_i \
  -DCMAKE_C_FLAGS='-qnostdinc -I/tmp/ii/test_c' \
  -DCMAKE_CXX_FLAGS='-qnostdinc -I/tmp/ii/test_c -I/tmp/ii/test_cxx' .