aboutsummaryrefslogtreecommitdiff
path: root/libcpp/files.cc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2024-05-16 21:43:20 -0400
committerJason Merrill <jason@redhat.com>2024-11-17 16:23:21 +0100
commitdbfbd3aa2c1fb6293defcb1ad16099bb8aa4a0cb (patch)
tree358098e57f13ab437e047c32ac98a41490ca94fd /libcpp/files.cc
parent7db55c0ba1baaf0e323ef7f9ef8c9cda077d40e9 (diff)
downloadgcc-dbfbd3aa2c1fb6293defcb1ad16099bb8aa4a0cb.zip
gcc-dbfbd3aa2c1fb6293defcb1ad16099bb8aa4a0cb.tar.gz
gcc-dbfbd3aa2c1fb6293defcb1ad16099bb8aa4a0cb.tar.bz2
c-family: add -fsearch-include-path
The C++ modules code has a -fmodule-header (or -x c++-{user,system}-header) option to specify looking up headers to compile to header units on the usual include paths. I'd like to have the same functionality for full C++20 modules such as module std, which I proposed to live on the include path at bits/std.cc. But this behavior doesn't seem necessarily connected to modules, so I'm proposing a general C/C++ option to specify the behavior of looking in the include path for the input files specified on the command line. Other ideas for the name of the option are very welcome. The libcpp change is to allow -fsearch-include-path{,=user} to find files in the current working directory, like -include. This can be handy for a quick compile of both std.cc and a file that imports it, e.g. g++ -std=c++20 -fmodules -fsearch-include-path bits/std.cc importer.cc gcc/ChangeLog: * doc/cppopts.texi: Document -fsearch-include-path. * doc/invoke.texi: Mention it for modules. gcc/c-family/ChangeLog: * c.opt: Add -fsearch-include-path. * c-opts.cc (c_common_post_options): Handle it. gcc/cp/ChangeLog: * module.cc (module_preprocess_options): Don't override it. libcpp/ChangeLog: * internal.h (search_path_head): Declare. * files.cc (search_path_head): No longer static. * init.cc (cpp_read_main_file): Use it.
Diffstat (limited to 'libcpp/files.cc')
-rw-r--r--libcpp/files.cc5
1 files changed, 1 insertions, 4 deletions
diff --git a/libcpp/files.cc b/libcpp/files.cc
index c63f582..840dffc 100644
--- a/libcpp/files.cc
+++ b/libcpp/files.cc
@@ -189,9 +189,6 @@ static bool read_file_guts (cpp_reader *pfile, _cpp_file *file,
location_t loc, const char *input_charset);
static bool read_file (cpp_reader *pfile, _cpp_file *file,
location_t loc);
-static struct cpp_dir *search_path_head (cpp_reader *, const char *fname,
- int angle_brackets, enum include_type,
- bool suppress_diagnostic = false);
static const char *dir_name_of_file (_cpp_file *file);
static void open_file_failed (cpp_reader *pfile, _cpp_file *file, int,
location_t);
@@ -1081,7 +1078,7 @@ _cpp_mark_file_once_only (cpp_reader *pfile, _cpp_file *file)
/* Return the directory from which searching for FNAME should start,
considering the directive TYPE and ANGLE_BRACKETS. If there is
nothing left in the path, returns NULL. */
-static struct cpp_dir *
+struct cpp_dir *
search_path_head (cpp_reader *pfile, const char *fname, int angle_brackets,
enum include_type type, bool suppress_diagnostic)
{