preprocessor: main file searching
authorNathan Sidwell <nathan@acm.org>
Thu, 19 Nov 2020 15:00:51 +0000 (07:00 -0800)
committerNathan Sidwell <nathan@acm.org>
Thu, 19 Nov 2020 15:05:08 +0000 (07:05 -0800)
commit9844497a935d5e89dc92539128edccb6bb408bb1
tree8556fefb85e32778246020206586c70ff3ffc56c
parentb204d7722d30f44281dea3341070223475f1cff9
preprocessor: main file searching

This adds the capability to locate the main file on the user or system
include paths.  That's extremely useful to users building header
units.  Searching has to be requiested (plain header-unit compilation
will not search).  Also, to make include_next work as expected when
building a header unit, we add a mechanism to retrofit a non-searched
source file as one on the include path.

libcpp/
* include/cpplib.h (enum cpp_main_search): New.
(struct cpp_options): Add main_search field.
(cpp_main_loc): Declare.
(cpp_retrofit_as_include): Declare.
* internal.h (struct cpp_reader): Add main_loc field.
(_cpp_in_main_source_file): Not main if main is a header.
* init.c (cpp_read_main_file): Use main_search option to locate
main file.  Set main_loc
* files.c (cpp_retrofit_as_include): New.
libcpp/files.c
libcpp/include/cpplib.h
libcpp/init.c
libcpp/internal.h