]> git.saurik.com Git - bison.git/commitdiff
Always put auxiliary code files in the same dir as other output files.
authorJoel E. Denny <jdenny@ces.clemson.edu>
Thu, 30 Oct 2008 19:35:01 +0000 (15:35 -0400)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Thu, 30 Oct 2008 19:43:11 +0000 (15:43 -0400)
* src/files.c (compute_file_name_parts): When the user specifies
--output but not --file-prefix, extract the directory prefix from the
file prefix not from the grammar file name.  This affects the location
of files like location.hh generated by the C++ skeleton.  The includes
in the other output files require this fix.
* tests/output.at (AT_CHECK_OUTPUT): Automatically create directories
for expected output files.
(Output files): Add a test for the above.

ChangeLog
src/files.c
tests/output.at

index 95477a250e760c863b0eac5bf32fd6b28ae14b2d..40037cf8c2d77d6819ff9f0fe86cf1d6dbdd8a76 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-10-30  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Always put auxiliary code files in the same dir as other output files.
+       * src/files.c (compute_file_name_parts): When the user specifies
+       --output but not --file-prefix, extract the directory prefix from the
+       file prefix not from the grammar file name.  This affects the location
+       of files like location.hh generated by the C++ skeleton.  The includes
+       in the other output files require this fix.
+       * tests/output.at (AT_CHECK_OUTPUT): Automatically create directories
+       for expected output files.
+       (Output files): Add a test for the above.
+
 2008-10-29  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        * gnulib: Update submodule to HEAD.
index a64234f46cf1d9d1257cfc3fd59dbc4d258874ca..07f761b461cb1a6e6fee7f692031b3968ee0f38c 100644 (file)
@@ -267,7 +267,9 @@ compute_file_name_parts (void)
       if (spec_file_prefix)
        {
          /* If --file-prefix=foo was specified, ALL_BUT_TAB_EXT = `foo'.  */
-         dir_prefix = xstrndup (grammar_file, base - grammar_file);
+         dir_prefix =
+            xstrndup (spec_file_prefix,
+                      last_component (spec_file_prefix) - spec_file_prefix);
          all_but_tab_ext = xstrdup (spec_file_prefix);
        }
       else if (yacc_flag)
index 3e815d70abc0571184c980d96aa15bb718c5fa8b..1e37347f767951d24c968522ac3d9ac33f7cb2c8 100644 (file)
@@ -23,9 +23,11 @@ AT_BANNER([[Output file names.]])
 # -----------------------------------------------------------------------------
 m4_define([AT_CHECK_OUTPUT],
 [AT_SETUP([[Output files: $2 $3 $5]])
-case "$1" in
-  */*) mkdir `echo "$1" | sed 's,/.*,,'`;;
-esac
+for file in $1 $4; do
+  case "$file" in
+    */*) mkdir -p `echo "$file" | sed 's,/.*,,'`;;
+  esac
+done
 AT_DATA([$1],
 [[$2
 %%
@@ -116,6 +118,11 @@ AT_CHECK_OUTPUT([subdir/foo.yy], [%skeleton "lalr1.cc" %defines %verbose],
                [subdir/foo.cc subdir/foo.hh subdir/foo.output subdir/location.hh subdir/stack.hh subdir/position.hh],
                [], [AT_CHECK_NO_SUBDIR_PART([subdir/foo])])
 
+AT_CHECK_OUTPUT([gram_dir/foo.yy],
+                [%skeleton "lalr1.cc" %defines %verbose %file-prefix "output_dir/foo"],
+                [],
+               [output_dir/foo.tab.cc output_dir/foo.tab.hh output_dir/foo.output output_dir/location.hh output_dir/stack.hh output_dir/position.hh])
+
 
 # AT_CHECK_CONFLICTING_OUTPUT(INPUT-FILE, DIRECTIVES, FLAGS, STDERR,
 #                             [EXIT-STATUS])