Merge topic 'ninja-include-dir'

144cc6f1 Ninja: Add source location as include directory for preprocessed files
This commit is contained in:
Brad King 2016-09-27 08:22:35 -04:00 committed by CMake Topic Stage
commit 4207aa4724
4 changed files with 22 additions and 0 deletions

View File

@ -841,6 +841,18 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
// directive.
ppVars["INCLUDES"] = vars["INCLUDES"];
// Prepend source file's original directory as an include directory
// so e.g. Fortran INCLUDE statements can look for files in it.
std::vector<std::string> sourceDirectory;
sourceDirectory.push_back(
cmSystemTools::GetParentDirectory(source->GetFullPath()));
std::string sourceDirectoryFlag = this->LocalGenerator->GetIncludeFlags(
sourceDirectory, this->GeneratorTarget, language, false, false,
this->GetConfigName());
vars["INCLUDES"] = sourceDirectoryFlag + " " + vars["INCLUDES"];
// Explicit preprocessing always uses a depfile.
ppVars["DEP_FILE"] =
cmGlobalNinjaGenerator::EncodeDepfileSpace(ppFileName + ".d");

View File

@ -52,6 +52,8 @@ add_definitions(-DFOO -DBAR=1)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
add_executable(test_preprocess test_preprocess.F90 test_preprocess_module.F90)
add_executable(test_non_pp_include test_non_pp_include_main.f90)
# Build the external project separately using a custom target.
# Make sure it uses the same build configuration as this test.
if(CMAKE_CONFIGURATION_TYPES)

View File

@ -0,0 +1,3 @@
SUBROUTINE NON_PP_INCLUDE_SUBROUTINE
PRINT *, "Hello World!"
END SUBROUTINE NON_PP_INCLUDE_SUBROUTINE

View File

@ -0,0 +1,5 @@
INCLUDE "non_pp_include.f90"
PROGRAM MAINF90
CALL NON_PP_INCLUDE_SUBROUTINE
END PROGRAM MAINF90