]> git.draconx.ca Git - cdecl99.git/blobdiff - Makefile.am
Use the newly-minted option generator script from dxcommon.
[cdecl99.git] / Makefile.am
index 6a8f1efe617e3960f51e8b6c35dae4f5e99b4fea..95f50cf61bf2e1639feb14e5f8b1846353b2676e 100644 (file)
@@ -26,7 +26,7 @@ DISTCLEANFILES =
 CLEANFILES = src/validtypes.h src/errtab.h src/namespecs.h src/ordspecs.h \
              test/typegen.h $(EXTRA_LTLIBRARIES)
 
-EXTRA_DIST = bootstrap common/scripts/fix-gnulib.pl m4/gnulib-cache.m4 \
+EXTRA_DIST = bootstrap $(DX_BASEDIR)/scripts/fix-gnulib.pl m4/gnulib-cache.m4 \
              src/types.lst src/validtypes.sed src/specs.lst src/namespecs.sed \
              src/ordspecs.sed src/errors.lst src/strtab.sed test/typegen.sh \
              src/parse.y src/parse.stamp src/scan.l src/scan.stamp \
@@ -51,10 +51,11 @@ libcdecl_la_LIBADD = libgnu.la $(LTLIBINTL) $(LTLIBTHREAD)
 $(libcdecl_la_OBJECTS): $(gnulib_headers)
 
 bin_PROGRAMS = cdecl99
-cdecl99_SOURCES = src/cdecl99.c
+cdecl99_SOURCES = src/cdecl99.c src/options.h
 cdecl99_LDADD = libcdecl.la libgnu.la \
                 $(LTLIBICONV) $(LTLIBINTL) $(LTLIBREADLINE)
 $(cdecl99_OBJECTS): $(gnulib_headers)
+$(cdecl99_OBJECTS): src/options.h
 
 check_PROGRAMS = test/crossparse
 check_LTLIBRARIES = libtest.la
@@ -183,6 +184,14 @@ distcheck-hook:
              echo '       *** programs are required for ChangeLog generation to work.'; \
              $(TEST_DISTRIBUTION_OR_ERROR); } >&2
 
+OPTFILES = src/options.opt
+.opt.h:
+       $(AM_V_GEN) $(AWK) -f $(DX_BASEDIR)/scripts/gen-options.awk $< >$@.tmp
+       $(AM_V_at) mv -f $@.tmp $@
+$(OPTFILES:.opt=.h): $(DX_BASEDIR)/scripts/gen-options.awk
+MAINTAINERCLEANFILES += $(OPTFILES:.opt=.h)
+EXTRA_DIST += $(DX_BASEDIR)/scripts/gen-options.awk $(OPTFILES)
+
 # Supporting rules for bison/flex.
 
 BISON_V   = $(BISON_V_@AM_V@)
@@ -193,10 +202,19 @@ FLEX_V   = $(FLEX_V_@AM_V@)
 FLEX_V_  = $(FLEX_V_@AM_DEFAULT_V@)
 FLEX_V_0 = @printf '  %$(DX_ALIGN_V)s %s\n' 'FLEX    ' $<;
 
-.y.c: ;
-.l.c: ;
+DEV_TOOL_ERROR = { \
+  echo "ERROR: *** $$tool is missing on your system."; \
+  echo "       *** Because of this, I cannot compile $$toolsrc, but"; \
+  echo "       *** (perhaps because you modified it) the sources appear out"; \
+  echo "       *** of date.  If $$tool is installed but was not detected by"; \
+  echo "       *** configure, consired setting $$toolvar and re-running configure."; \
+  echo "       *** See config.log for more details."; } >&2; false
 
+.y.c: ;
 .y.stamp:
+if !HAVE_BISON
+       $(BISON_V)tool=bison toolvar=BISON toolsrc=$<; $(DEV_TOOL_ERROR)
+endif
        $(AM_V_at) touch $@.tmp
        $(BISON_V) $(BISON) $(BISON_COMPAT) -o $*.c --defines=$*.h.tmp $(BISONFLAGS) $<
        $(AM_V_at) if cmp $*.h.tmp $*.h >/dev/null 2>&1; then \
@@ -206,7 +224,11 @@ FLEX_V_0 = @printf '  %$(DX_ALIGN_V)s %s\n' 'FLEX    ' $<;
        fi
        $(AM_V_at) mv -f $@.tmp $@
 
+.l.c: ;
 .l.stamp:
+if !HAVE_FLEX
+       $(FLEX_V)tool=flex toolvar=FLEX toolsrc=$<; $(DEV_TOOL_ERROR)
+endif
        $(AM_V_at) touch $@.tmp
        $(FLEX_V) $(FLEX) -o $*.c --header-file=$*.h.tmp $(FLEXFLAGS) $<
        $(AM_V_at) if cmp $*.h.tmp $*.h >/dev/null 2>&1; then \