incpath.c (get_added_cpp_dirs): New function.
2011-11-15 Tristan Gingold <gingold@adacore.com> * incpath.c (get_added_cpp_dirs): New function. * incpath.h (get_added_cpp_dirs): Declare. * config/vms/vms-c.c (vms_c_register_includes): New function. (vms_std_modules): New variable. * config/vms/vms.h (TARGET_EXTRA_INCLUDES): Define. (vms_c_register_includes): Declare. From-SVN: r181380
This commit is contained in:
parent
e50e723eec
commit
0ea069123c
@ -1,3 +1,12 @@
|
||||
2011-11-15 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* incpath.c (get_added_cpp_dirs): New function.
|
||||
* incpath.h (get_added_cpp_dirs): Declare.
|
||||
* config/vms/vms-c.c (vms_c_register_includes): New function.
|
||||
(vms_std_modules): New variable.
|
||||
* config/vms/vms.h (TARGET_EXTRA_INCLUDES): Define.
|
||||
(vms_c_register_includes): Declare.
|
||||
|
||||
2011-11-15 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* c-family/c-pragma.h (pragma_extern_prefix): Declare.
|
||||
|
@ -283,3 +283,50 @@ vms_c_register_pragma (void)
|
||||
c_register_pragma (NULL, "__message", vms_pragma_message);
|
||||
c_register_pragma (NULL, "__extern_prefix", vms_pragma_extern_prefix);
|
||||
}
|
||||
|
||||
/* Standard modules list. */
|
||||
static const char * const vms_std_modules[] = { "rtldef", "starlet_c", NULL };
|
||||
|
||||
/* Find include modules in the include path. */
|
||||
|
||||
void
|
||||
vms_c_register_includes (const char *sysroot,
|
||||
const char *iprefix ATTRIBUTE_UNUSED, int stdinc)
|
||||
{
|
||||
static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
|
||||
struct cpp_dir *dir;
|
||||
|
||||
/* Add on standard include pathes. */
|
||||
if (!stdinc)
|
||||
return;
|
||||
|
||||
for (dir = get_added_cpp_dirs (SYSTEM); dir != NULL; dir = dir->next)
|
||||
{
|
||||
const char * const *lib;
|
||||
for (lib = vms_std_modules; *lib != NULL; lib++)
|
||||
{
|
||||
char *path;
|
||||
struct stat st;
|
||||
|
||||
if (sysroot != NULL)
|
||||
path = concat (sysroot, dir->name, dir_separator_str, *lib, NULL);
|
||||
else
|
||||
path = concat (dir->name, dir_separator_str, *lib, NULL);
|
||||
|
||||
if (stat (path, &st) == 0 && S_ISDIR (st.st_mode))
|
||||
{
|
||||
cpp_dir *p;
|
||||
|
||||
p = XNEW (cpp_dir);
|
||||
p->next = NULL;
|
||||
p->name = path;
|
||||
p->sysp = 1;
|
||||
p->construct = 0;
|
||||
p->user_supplied_p = 0;
|
||||
add_cpp_dir_path (p, SYSTEM);
|
||||
}
|
||||
else
|
||||
free (path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,6 +34,9 @@ along with GCC; see the file COPYING3. If not see
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
extern void vms_c_register_includes (const char *, const char *, int);
|
||||
#define TARGET_EXTRA_INCLUDES vms_c_register_includes
|
||||
|
||||
/* Tell compiler we want to support VMS pragmas */
|
||||
#define REGISTER_TARGET_PRAGMAS() vms_c_register_pragma ()
|
||||
|
||||
|
@ -460,6 +460,15 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
|
||||
cpp_set_include_chains (pfile, heads[QUOTE], heads[BRACKET],
|
||||
quote_ignores_source_dir);
|
||||
}
|
||||
|
||||
/* Return the current chain of cpp dirs. */
|
||||
|
||||
struct cpp_dir *
|
||||
get_added_cpp_dirs (int chain)
|
||||
{
|
||||
return heads[chain];
|
||||
}
|
||||
|
||||
#if !(defined TARGET_EXTRA_INCLUDES) || !(defined TARGET_EXTRA_PRE_INCLUDES)
|
||||
static void hook_void_charptr_charptr_int (const char *sysroot ATTRIBUTE_UNUSED,
|
||||
const char *iprefix ATTRIBUTE_UNUSED,
|
||||
|
@ -22,6 +22,7 @@ extern void register_include_chains (cpp_reader *, const char *,
|
||||
const char *, const char *,
|
||||
int, int, int);
|
||||
extern void add_cpp_dir_path (struct cpp_dir *, int);
|
||||
extern struct cpp_dir *get_added_cpp_dirs (int);
|
||||
|
||||
struct target_c_incpath_s {
|
||||
/* Do extra includes processing. STDINC is false iff -nostdinc was given. */
|
||||
|
Loading…
Reference in New Issue
Block a user