]> git.draconx.ca Git - cdecl99.git/blobdiff - Makefile.am
Use gperf to implement command selection.
[cdecl99.git] / Makefile.am
index 95f50cf61bf2e1639feb14e5f8b1846353b2676e..ce76be1d0589b9d1d38a2b94749c787a3fb5f458 100644 (file)
@@ -19,7 +19,7 @@ AM_CPPFLAGS = -I$(top_builddir)/src -I$(top_srcdir)/src \
 AM_CFLAGS = $(GSL_CFLAGS)
 
 MAINTAINERCLEANFILES = src/scan.c src/scan.h src/scan.stamp \
-       src/parse.c src/parse.h src/parse.stamp
+                       src/parse.c src/parse.h src/parse.stamp
 
 DISTCLEANFILES =
 
@@ -51,12 +51,22 @@ libcdecl_la_LIBADD = libgnu.la $(LTLIBINTL) $(LTLIBTHREAD)
 $(libcdecl_la_OBJECTS): $(gnulib_headers)
 
 bin_PROGRAMS = cdecl99
-cdecl99_SOURCES = src/cdecl99.c src/options.h
-cdecl99_LDADD = libcdecl.la libgnu.la \
-                $(LTLIBICONV) $(LTLIBINTL) $(LTLIBREADLINE)
+cdecl99_SOURCES = src/commands.c src/cdecl99.h
+cdecl99_LDADD = $(libmain_a_OBJECTS) $(libexec_a_OBJECTS) libcdecl.la \
+                libgnu.la $(LTLIBICONV) $(LTLIBINTL) $(LTLIBREADLINE)
 $(cdecl99_OBJECTS): $(gnulib_headers)
 $(cdecl99_OBJECTS): src/options.h
 
+EXTRA_LIBRARIES = libexec.a
+libexec_a_SOURCES = src/execute.c src/commands.h
+$(libexec_a_OBJECTS): $(gnulib_headers)
+$(libexec_a_OBJECTS): src/commands.h src/cmdlist.h
+
+EXTRA_LIBRARIES += libmain.a
+libmain_a_SOURCES = src/cdecl99.c src/options.h
+$(libmain_a_OBJECTS): $(gnulib_headers)
+$(libmain_a_OBJECTS): src/options.h
+
 check_PROGRAMS = test/crossparse
 check_LTLIBRARIES = libtest.la
 libtest_la_LIBADD = $(GSL_LIBS)
@@ -192,6 +202,23 @@ $(OPTFILES:.opt=.h): $(DX_BASEDIR)/scripts/gen-options.awk
 MAINTAINERCLEANFILES += $(OPTFILES:.opt=.h)
 EXTRA_DIST += $(DX_BASEDIR)/scripts/gen-options.awk $(OPTFILES)
 
+STRFILES = src/commands.str
+.str.h:
+       $(AM_V_GEN) $(AWK) -f $(DX_BASEDIR)/scripts/gen-strtab.awk $< >$@.tmp
+       $(AM_V_at) mv -f $@.tmp $@
+$(STRFILES:.str=.h): $(DX_BASEDIR)/scripts/gen-strtab.awk
+MAINTAINERCLEANFILES += $(STRFILES:.str=.h)
+EXTRA_DIST += $(DX_BASEDIR)/scripts/gen-strtab.awk $(STRFILES)
+
+src/cmdlist.h: src/gen-cmdlist.awk src/execute.c
+       $(AM_V_GEN) if test -f '$(builddir)/src/execute.c'; \
+         then f='$(builddir)/src/execute.c'; \
+         else f='$(srcdir)/src/execute.c'; \
+         fi; $(AWK) -f $(srcdir)/src/gen-cmdlist.awk "$$f" >$@.tmp
+       $(AM_V_at) mv -f $@.tmp $@
+DISTCLEANFILES += src/cmdlist.h
+EXTRA_DIST += src/gen-cmdlist.awk
+
 # Supporting rules for bison/flex.
 
 BISON_V   = $(BISON_V_@AM_V@)
@@ -250,6 +277,13 @@ endif
                $(MAKE) $(AM_MAKEFLAGS) $<; \
        fi
 
+GPERFFILES = src/execute.gperf
+.gperf.c:
+       $(V_GPERF) $(GPERF) $< >$@.tmp
+       $(AM_V_at) mv $@.tmp $@
+MAINTAINERCLEANFILES += $(GPERFFILES:.gperf=.c)
+EXTRA_DIST += $(GPERFFILES)
+
 atlocal: config.status
        $(AM_V_GEN) :; { \
          printf ': "$${%s=%s}"\n' \