(yy_buffer_stack != 0 ? yy_buffer_stack[yy_buffer_stack_top] : 0)
#endif
+extern bool relative_includes;
+
Includable_lexer::Includable_lexer ()
{
#if HAVE_FLEXLEXER_YY_CURRENT_BUFFER
void
Includable_lexer::new_input (string name, Sources *sources)
{
- string current_dir = include_stack_.size () ?
- dir_name (include_stack_.back ()->name_string ()) : "";
+ string current_dir = dir_name (main_input_name_);
+ if (relative_includes)
+ current_dir = include_stack_.size () ? dir_name (include_stack_.back ()->name_string ()) : "";
Source_file *file = sources->get_file (name, current_dir);
if (!file)
Includable_lexer ();
~Includable_lexer ();
+ string main_input_name_;
/// store dependencies for Makefile stuff.
vector<string> file_name_strings_;
int hidden_state_;
public:
vector<int> extra_token_types_;
- string main_input_name_;
void *lexval;
Input *lexloc;
bool is_main_input_;
bool debug_property_callbacks;
bool debug_page_breaking_scoring;
+bool relative_includes;
+
/*
Backwards compatibility.
*/
/* ignore input value. */
val = ly_string2scm (lilypond_datadir);
}
+ else if (var == ly_symbol2scm ("relative-includes"))
+ {
+ relative_includes = to_boolean (val);
+ val = scm_from_bool (to_boolean (val));
+ }
scm_hashq_set_x (option_hash, var, val);
(resolution 101 "resolution for generating PNG bitmaps")
(read-file-list #f "Read files to be processed from command line arguments")
+ (relative-includes #f "When processing an \\include command, look for the included file
+relative to the current file (instead of the root file)")
(safe #f "Run safely")
(strict-infinity-checking #f "If yes, crash on encountering Inf/NaN.")