diff --git a/data/local.mk b/data/local.mk index 56cfebf1..7465e5a7 100644 --- a/data/local.mk +++ b/data/local.mk @@ -14,30 +14,33 @@ ## along with this program. If not, see . dist_pkgdata_DATA = \ - data/README \ - data/bison.m4 \ - data/c++-skel.m4 \ - data/c++.m4 \ - data/c-like.m4 \ - data/c-skel.m4 \ - data/c.m4 \ - data/glr.c \ - data/glr.cc \ - data/java-skel.m4 \ - data/java.m4 \ - data/lalr1.cc \ - data/lalr1.java \ - data/location.cc \ - data/stack.hh \ - data/variant.hh \ - data/yacc.c + data/README + +skeletonsdir = $(pkgdatadir)/skeletons +dist_skeletons_DATA = \ + data/skeletons/bison.m4 \ + data/skeletons/c++-skel.m4 \ + data/skeletons/c++.m4 \ + data/skeletons/c-like.m4 \ + data/skeletons/c-skel.m4 \ + data/skeletons/c.m4 \ + data/skeletons/glr.c \ + data/skeletons/glr.cc \ + data/skeletons/java-skel.m4 \ + data/skeletons/java.m4 \ + data/skeletons/lalr1.cc \ + data/skeletons/lalr1.java \ + data/skeletons/location.cc \ + data/skeletons/stack.hh \ + data/skeletons/variant.hh \ + data/skeletons/yacc.c # Experimental support for the D language. -dist_pkgdata_DATA += \ - data/README-D.txt \ - data/d-skel.m4 \ - data/d.m4 \ - data/lalr1.d +dist_skeletons_DATA += \ + data/skeletons/README-D.txt \ + data/skeletons/d-skel.m4 \ + data/skeletons/d.m4 \ + data/skeletons/lalr1.d m4sugardir = $(pkgdatadir)/m4sugar dist_m4sugar_DATA = \ diff --git a/data/README-D.txt b/data/skeletons/README-D.txt similarity index 100% rename from data/README-D.txt rename to data/skeletons/README-D.txt diff --git a/data/bison.m4 b/data/skeletons/bison.m4 similarity index 100% rename from data/bison.m4 rename to data/skeletons/bison.m4 diff --git a/data/c++-skel.m4 b/data/skeletons/c++-skel.m4 similarity index 79% rename from data/c++-skel.m4 rename to data/skeletons/c++-skel.m4 index 3cd56789..8beff68e 100644 --- a/data/c++-skel.m4 +++ b/data/skeletons/c++-skel.m4 @@ -18,10 +18,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -b4_glr_if( [m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.cc]])]) -b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.cc]])]) +b4_glr_if( [m4_define([b4_used_skeleton], [b4_skeletonsdir/[glr.cc]])]) +b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_skeletonsdir/[glr.cc]])]) -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.cc]]) +m4_define_default([b4_used_skeleton], [b4_skeletonsdir/[lalr1.cc]]) m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) m4_include(b4_used_skeleton) diff --git a/data/c++.m4 b/data/skeletons/c++.m4 similarity index 99% rename from data/c++.m4 rename to data/skeletons/c++.m4 index dbf0647a..e0f4dacb 100644 --- a/data/c++.m4 +++ b/data/skeletons/c++.m4 @@ -22,7 +22,7 @@ b4_percent_define_ifdef([[api.value.union.name]], [b4_complain_at(b4_percent_define_get_loc([[api.value.union.name]]), [named %union is invalid in C++])]) -m4_include(b4_pkgdatadir/[c.m4]) +m4_include(b4_skeletonsdir/[c.m4]) b4_percent_define_check_kind([api.namespace], [code], [deprecated]) b4_percent_define_check_kind([parser_class_name], [code], [deprecated]) diff --git a/data/c-like.m4 b/data/skeletons/c-like.m4 similarity index 100% rename from data/c-like.m4 rename to data/skeletons/c-like.m4 diff --git a/data/c-skel.m4 b/data/skeletons/c-skel.m4 similarity index 79% rename from data/c-skel.m4 rename to data/skeletons/c-skel.m4 index cb9a7a21..317655ce 100644 --- a/data/c-skel.m4 +++ b/data/skeletons/c-skel.m4 @@ -18,10 +18,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -b4_glr_if( [m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.c]])]) -b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.c]])]) +b4_glr_if( [m4_define([b4_used_skeleton], [b4_skeletonsdir/[glr.c]])]) +b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_skeletonsdir/[glr.c]])]) -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[yacc.c]]) +m4_define_default([b4_used_skeleton], [b4_skeletonsdir/[yacc.c]]) m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) m4_include(b4_used_skeleton) diff --git a/data/c.m4 b/data/skeletons/c.m4 similarity index 99% rename from data/c.m4 rename to data/skeletons/c.m4 index b51aeca5..ecd0167d 100644 --- a/data/c.m4 +++ b/data/skeletons/c.m4 @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -m4_include(b4_pkgdatadir/[c-like.m4]) +m4_include(b4_skeletonsdir/[c-like.m4]) # b4_tocpp(STRING) # ---------------- diff --git a/data/d-skel.m4 b/data/skeletons/d-skel.m4 similarity index 94% rename from data/d-skel.m4 rename to data/skeletons/d-skel.m4 index 0c84a988..82465d32 100644 --- a/data/d-skel.m4 +++ b/data/skeletons/d-skel.m4 @@ -20,7 +20,7 @@ b4_glr_if( [b4_complain([%%glr-parser not supported for D])]) b4_nondeterministic_if([b4_complain([%%nondeterministic-parser not supported for D])]) -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.d]]) +m4_define_default([b4_used_skeleton], [b4_skeletonsdir/[lalr1.d]]) m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) m4_include(b4_used_skeleton) diff --git a/data/d.m4 b/data/skeletons/d.m4 similarity index 100% rename from data/d.m4 rename to data/skeletons/d.m4 diff --git a/data/glr.c b/data/skeletons/glr.c similarity index 99% rename from data/glr.c rename to data/skeletons/glr.c index 64237b8b..f7f3c73b 100644 --- a/data/glr.c +++ b/data/skeletons/glr.c @@ -21,7 +21,7 @@ # If we are loaded by glr.cc, do not override c++.m4 definitions by # those of c.m4. m4_if(b4_skeleton, ["glr.c"], - [m4_include(b4_pkgdatadir/[c.m4])]) + [m4_include(b4_skeletonsdir/[c.m4])]) ## ---------------- ## ## Default values. ## diff --git a/data/glr.cc b/data/skeletons/glr.cc similarity index 98% rename from data/glr.cc rename to data/skeletons/glr.cc index 0401b849..c9c4acda 100644 --- a/data/glr.cc +++ b/data/skeletons/glr.cc @@ -46,8 +46,8 @@ # We require a pure interface. m4_define([b4_pure_flag], [1]) -m4_include(b4_pkgdatadir/[c++.m4]) -b4_bison_locations_if([m4_include(b4_pkgdatadir/[location.cc])]) +m4_include(b4_skeletonsdir/[c++.m4]) +b4_bison_locations_if([m4_include(b4_skeletonsdir/[location.cc])]) m4_define([b4_parser_class_name], [b4_percent_define_get([[parser_class_name]])]) @@ -354,5 +354,5 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++], # Let glr.c (and b4_shared_declarations) believe that the user # arguments include the parser itself. m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_wrap])) -m4_include(b4_pkgdatadir/[glr.c]) +m4_include(b4_skeletonsdir/[glr.c]) m4_popdef([b4_parse_param]) diff --git a/data/java-skel.m4 b/data/skeletons/java-skel.m4 similarity index 93% rename from data/java-skel.m4 rename to data/skeletons/java-skel.m4 index 79c3f536..ca3f9c9b 100644 --- a/data/java-skel.m4 +++ b/data/skeletons/java-skel.m4 @@ -20,7 +20,7 @@ b4_glr_if( [b4_complain([%%glr-parser not supported for Java])]) b4_nondeterministic_if([b4_complain([%%nondeterministic-parser not supported for Java])]) -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.java]]) +m4_define_default([b4_used_skeleton], [b4_skeletonsdir/[lalr1.java]]) m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) m4_include(b4_used_skeleton) diff --git a/data/java.m4 b/data/skeletons/java.m4 similarity index 99% rename from data/java.m4 rename to data/skeletons/java.m4 index 77d53ac9..4b9565af 100644 --- a/data/java.m4 +++ b/data/skeletons/java.m4 @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -m4_include(b4_pkgdatadir/[c-like.m4]) +m4_include(b4_skeletonsdir/[c-like.m4]) # b4_list2(LIST1, LIST2) diff --git a/data/lalr1.cc b/data/skeletons/lalr1.cc similarity index 99% rename from data/lalr1.cc rename to data/skeletons/lalr1.cc index c861f195..ecf55930 100644 --- a/data/lalr1.cc +++ b/data/skeletons/lalr1.cc @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -m4_include(b4_pkgdatadir/[c++.m4]) +m4_include(b4_skeletonsdir/[c++.m4]) # api.value.type=variant is valid. m4_define([b4_value_type_setup_variant]) @@ -142,9 +142,9 @@ m4_define([b4_parser_class_name], b4_bison_locations_if([# Backward compatibility. m4_define([b4_location_constructors]) - m4_include(b4_pkgdatadir/[location.cc])]) -m4_include(b4_pkgdatadir/[stack.hh]) -b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])]) + m4_include(b4_skeletonsdir/[location.cc])]) +m4_include(b4_skeletonsdir/[stack.hh]) +b4_variant_if([m4_include(b4_skeletonsdir/[variant.hh])]) # b4_shared_declarations(hh|cc) diff --git a/data/lalr1.d b/data/skeletons/lalr1.d similarity index 99% rename from data/lalr1.d rename to data/skeletons/lalr1.d index 2055884e..c65370c6 100644 --- a/data/lalr1.d +++ b/data/skeletons/lalr1.d @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -m4_include([d.m4]) +m4_include(b4_skeletonsdir/[d.m4]) m4_divert_push(0)dnl diff --git a/data/lalr1.java b/data/skeletons/lalr1.java similarity index 99% rename from data/lalr1.java rename to data/skeletons/lalr1.java index ae87cfb8..5424c58f 100644 --- a/data/lalr1.java +++ b/data/skeletons/lalr1.java @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -m4_include(b4_pkgdatadir/[java.m4]) +m4_include(b4_skeletonsdir/[java.m4]) b4_defines_if([b4_fatal([%s: %%defines does not make sense in Java], [b4_skeleton])]) diff --git a/data/location.cc b/data/skeletons/location.cc similarity index 100% rename from data/location.cc rename to data/skeletons/location.cc diff --git a/data/stack.hh b/data/skeletons/stack.hh similarity index 100% rename from data/stack.hh rename to data/skeletons/stack.hh diff --git a/data/variant.hh b/data/skeletons/variant.hh similarity index 100% rename from data/variant.hh rename to data/skeletons/variant.hh diff --git a/data/yacc.c b/data/skeletons/yacc.c similarity index 99% rename from data/yacc.c rename to data/skeletons/yacc.c index bee27d92..29cd3146 100644 --- a/data/yacc.c +++ b/data/skeletons/yacc.c @@ -51,7 +51,7 @@ m4_define([b4_lac_flag], [m4_if(b4_percent_define_get([[parse.lac]]), [none], [[0]], [[1]])]) -m4_include(b4_pkgdatadir/[c.m4]) +m4_include(b4_skeletonsdir/[c.m4]) ## ---------------- ## ## Default values. ## diff --git a/runtime-po/POTFILES.in b/runtime-po/POTFILES.in index 7e730633..083438a8 100644 --- a/runtime-po/POTFILES.in +++ b/runtime-po/POTFILES.in @@ -1,3 +1,3 @@ -data/glr.c -data/lalr1.cc -data/yacc.c +data/skeletons/glr.c +data/skeletons/lalr1.cc +data/skeletons/yacc.c diff --git a/src/output.c b/src/output.c index c12ecdc6..b6c60cf5 100644 --- a/src/output.c +++ b/src/output.c @@ -549,11 +549,12 @@ output_skeleton (void) /* Compute the names of the package data dir and skeleton files. */ char const *m4 = (m4 = getenv ("M4")) ? m4 : M4; char const *datadir = pkgdatadir (); + char *skeldir = xpath_join (datadir, "skeletons"); char *m4sugar = xpath_join (datadir, "m4sugar/m4sugar.m4"); - char *m4bison = xpath_join (datadir, "bison.m4"); + char *m4bison = xpath_join (skeldir, "bison.m4"); char *skel = (IS_PATH_WITH_DIR (skeleton) ? xstrdup (skeleton) - : xpath_join (datadir, skeleton)); + : xpath_join (skeldir, skeleton)); /* Test whether m4sugar.m4 is readable, to check for proper installation. A faulty installation can cause deadlock, so a @@ -608,6 +609,7 @@ output_skeleton (void) true, filter_fd); } + free (skeldir); free (m4sugar); free (m4bison); free (skel); @@ -680,10 +682,12 @@ prepare (void) /* About the skeletons. */ { - /* b4_pkgdatadir is used inside m4_include in the skeletons, so digraphs + /* b4_skeletonsdir is used inside m4_include in the skeletons, so digraphs would never be expanded. Hopefully no one has M4-special characters in his Bison installation path. */ - MUSCLE_INSERT_STRING_RAW ("pkgdatadir", pkgdatadir ()); + char *skeldir = xpath_join (pkgdatadir (), "skeletons"); + MUSCLE_INSERT_STRING_RAW ("skeletonsdir", skeldir); + free (skeldir); } }