dthelp/parser/pass1: get it to build
authorJon Trulson <jon@radscan.com>
Wed, 15 Apr 2020 17:34:01 +0000 (11:34 -0600)
committerJon Trulson <jon@radscan.com>
Tue, 21 Apr 2020 21:40:05 +0000 (15:40 -0600)
So this is going to be tricky/painful getting this parser fully
operational.  It's pretty hairy with various interdependencies and
generated code.

It's rather complicated how each sub dir depends on the previous one.
Also, the parser subdir has dependencies on the helptag subdir, and
vice-versa, so some hackery was needed to get that to work.

Due to the wierd interdepencencies between helptag and parser,
we disable parallel builds there.

This is some really horrible code and design - not surprising since it
dates to 1989.

I think it should just be removed -- who can maintain or refactor this
code?

Also, dthelp_htag1 is now built in pass1/parser/, not in
pass1/helptag/ as it used to be.

cde/.gitignore
cde/autogen.sh
cde/configure.ac
cde/programs/dthelp/Makefile.am
cde/programs/dthelp/parser/Makefile.am
cde/programs/dthelp/parser/pass1/build/Makefile.am
cde/programs/dthelp/parser/pass1/eltdef/Makefile.am
cde/programs/dthelp/parser/pass1/helptag/Makefile.am
cde/programs/dthelp/parser/pass1/parser/Makefile.am [new file with mode: 0644]
cde/programs/dthelp/parser/pass1/util/Makefile.am [new file with mode: 0644]

index 4a4c2ffba1bfc20c46d74bc1b3b45a38f1b50217..7638667aa5c3adb242abba4e7aff08e5225a988d 100644 (file)
@@ -10,8 +10,9 @@
 *~
 .depend
 
-# flags for saying directory is complete
+# flags for saying directory/target is complete
 DONE
+?DONE
 
 # imports of of headers
 imports/x11
@@ -590,13 +591,12 @@ programs/dthelp/parser/pass1/eltdef/stfile.c
 programs/dthelp/parser/pass1/eltdef/tfile.c
 programs/dthelp/parser/pass1/helptag/LocaleXlate.c
 programs/dthelp/parser/pass1/helptag/XlationSvc.c
-programs/dthelp/parser/pass1/helptag/dthelp_htag1
 programs/dthelp/parser/pass1/parser/case.c
 programs/dthelp/parser/pass1/parser/context.h
 programs/dthelp/parser/pass1/parser/delim.dat
 programs/dthelp/parser/pass1/parser/delim.h
 programs/dthelp/parser/pass1/parser/error
-programs/dthelp/parser/pass1/parser/parser
+programs/dthelp/parser/pass1/parser/dthelp_htag1
 programs/dthelp/parser/pass1/util/context
 programs/dthelp/parser/pass1/util/fclndir
 programs/dthelp/parser/pass2/build/arc.h
index a04d233682716de5dc48745fd361a23ef1795122..9461dd37a91418d70c170f34b5202de98d6bded2 100755 (executable)
@@ -9,7 +9,7 @@ DIE=0
 
 libtoolize --force --automake
 aclocal -I admin
-autoconf
+autoconf -f
 autoheader
 automake --foreign  --include-deps --add-missing
 
index a8a66bf938dd8bfb5d0ea4ad999783c6e4761e48..370b5bab4dc630adba48107b10e09ca4243b8a05 100644 (file)
@@ -514,6 +514,13 @@ programs/dthelp/dthelpview/Makefile
 programs/dthelp/dthelpgen/Makefile
 programs/dthelp/dthelpdemo/Makefile
 programs/dthelp/dthelpprint/Makefile
+programs/dthelp/parser/Makefile
+programs/dthelp/parser/pass1/Makefile
+programs/dthelp/parser/pass1/util/Makefile
+programs/dthelp/parser/pass1/build/Makefile
+programs/dthelp/parser/pass1/eltdef/Makefile
+programs/dthelp/parser/pass1/helptag/Makefile
+programs/dthelp/parser/pass1/parser/Makefile
 
 programs/nsgmls/Makefile
 
@@ -659,9 +666,6 @@ programs/localized/es_ES.UTF-8/appmanager/Makefile
 AC_OUTPUT
 
 dnl not currently building
-dnl programs/dthelp/Makefile
-dnl programs/dthelp/dthelpgen/Makefile
-dnl programs/dthelp/dthelpprint/Makefile
 dnl programs/dthelp/parser/pass1/helptag/Makefile
 dnl programs/dthelp/parser/pass1/Makefile
 dnl programs/dthelp/parser/pass1/eltdef/Makefile
@@ -669,4 +673,3 @@ dnl programs/dthelp/parser/pass1/build/Makefile
 dnl programs/dthelp/parser/Makefile
 dnl programs/dthelp/parser/canon1/Makefile
 dnl programs/dthelp/parser/pass2/Makefile
-dnl programs/dthelp/dthelpview/Makefile
index 970aa4116da2fb1f200e2c0d79dbd73537ce7906..4d351c9f5b0e645afd4a26ed5c89e2a5e07310b7 100644 (file)
@@ -1,5 +1,4 @@
 MAINTAINERCLEANFILES = Makefile.in
 
-SUBDIRS = dthelpview dthelpgen dthelpdemo dthelpprint
+SUBDIRS = dthelpview dthelpgen dthelpdemo dthelpprint parser
 
-#NOTYET  = parser 
index a0167120ba3648625248c79410db78d4e3dae599..4e38114c97c21e5f9fbece7bae78b595a0296ba3 100644 (file)
@@ -1,3 +1,5 @@
 MAINTAINERCLEANFILES = Makefile.in
 
-SUBDIRS = pass1 canon1 pass2 helptag misc dtds
+SUBDIRS = pass1
+
+#NOTYET canon1 pass2 helptag misc dtds
index 19f53ca9ad7abb92dc91a1d0488c6b09b4f38840..7f6163baebdc25ac410390f6a94ef6ad6fcf3a42 100644 (file)
@@ -2,10 +2,6 @@ MAINTAINERCLEANFILES = Makefile.in
 
 noinst_PROGRAMS = build
 
-ARCCMD = arc u
-UNARCCMD = arc x
-ARCDELCMD = arc d
-
 HELPTAG       = ..
 HELPTAGSRC    = $(HELPTAG)/helptag
 HELPPARSERSRC = $(HELPTAG)/parser
@@ -17,15 +13,7 @@ HELPUTILLIB   = $(HELPTAG)/util/libutil.a
 
 build_CFLAGS = -I$(HELPUTILSRC)
 
-build_LDADD = -l$(HELPUTILLIB)
-
-if HPUX
-build_LDFLAGS = -Wl,-a archive
-endif
-
-if SOLARIS
-.NO_PARALLEL:
-endif
+build_LDADD = ../util/libutil.a
 
 build_SOURCES = build.c buildutl.c eltree.c except.c fsa.c out.c param.c \
                scan.c sref.c tree.c
@@ -43,28 +31,25 @@ CPRODS  = $(CHPRODS) $(CCPRODS)
 BPRODS  = $(BHPRODS) $(BCPRODS)
 TRASH   = error delim.dat template
 
-PRODUCTS = $(CPRODS) $(BPRODS)
-
-all:: $(PRODUCTS)
+BUILT_SOURCES = $(CPRODS) $(BPRODS)
+CLEANFILES = $(BUILT_SOURCES) $(TRASH) BDONE CDONE
 
-$(BPRODS): build $(HELPDTDFILE)
-        $(RM) $(BPRODS) $(BTRASH)
-        ./build < $(HELPDTDFILE)
+# We want the commands that actually create BPRODS and CPRODS to only
+# run once during a make so we gate them using these CDONE and BDONE
+# targets.  This allows us to enable parallel building too.
+$(BPRODS): BDONE
 
-$(CPRODS):  $(HELPUTILSRC)/context $(HELPTAGSRC)/delim.bld context.dat
-        $(RM) $(CPRODS) $(CTRASH)
-        $(CP) $(HELPTAGSRC)/delim.bld delim.dat  #appl.-specific delim.dat
-        $(HELPUTILSRC)/context sparse
+$(CPRODS): CDONE
 
-$(HELPUTILSRC)/context:
-        cd $(HELPUTILSRC); make context
+# build the BRPODS
+BDONE: ./build $(HELPDTDFILE)
+       $(RM) $(BPRODS) $(BTRASH) && ./build < $(HELPDTDFILE) && touch BDONE
 
-arc package :
-        if exist util.arc $(CP) build.arc old.arc
-        $(ARCCMD) util.arc *.c *.h makefile
 
-unarc dearc :
-        $(UNARCCMD) util.arc
+# build the CRPODS
+CDONE: $(HELPUTILSRC)/context $(HELPTAGSRC)/delim.bld context.dat
+       $(RM) $(CPRODS) $(CTRASH)
+       $(CP) $(HELPTAGSRC)/delim.bld delim.dat # appl.-specific delim.dat
+       $(HELPUTILSRC)/context sparse
+       touch CDONE
 
-clean::
-        $(RM) $(PRODUCTS) $(TRASH)
index 8b3c8d6f384109e0e1ad6c10adb77057baae9d65..9d045324391bb31e346842193585c9932bb5ba0a 100644 (file)
@@ -2,10 +2,6 @@ MAINTAINERCLEANFILES = Makefile.in
 
 noinst_PROGRAMS = eltdef
 
-ARCCMD = arc u
-UNARCCMD = arc x
-ARCDELCMD = arc d
-
 HELPTAG       = ..
 HELPTAGSRC    = $(HELPTAG)/helptag
 HELPPARSERSRC = $(HELPTAG)/parser
@@ -17,15 +13,7 @@ HELPUTILLIB   = $(HELPTAG)/util/libutil.a
 HELPIFFILE    = $(HELPTAGSRC)/help.if
 HELPTSSFILE   = $(HELPTAGSRC)/htag.tss
 
-eltdef_LDADD = -l$(HELPUTILLIB)
-
-if HPUX
-eltdef_LDFLAGS = -Wl,-a archive
-endif
-
-if SOLARIS
-.NO_PARALLEL:
-endif
+eltdef_LDADD = $(HELPUTILLIB)
 
 eltdef_CFLAGS = -I$(HELPUTILSRC) -I$(HELPBUILDSRC)
 
@@ -44,28 +32,22 @@ CTRASH  = delim.dat error
 ETRASH  = estring.h error
 TRASH   = delim.dat estring.h error
 
-PRODUCTS = $(CPRODS) $(EPRODS)
+BUILT_SOURCES = $(CPRODS) $(EPRODS)
+CLEANFILES = $(BUILT_SOURCES) $(TRASH) CDONE EDONE
+
+$(CPRODS): CDONE
 
-all:: $(PRODUCTS)
+$(EPRODS): EDONE
 
-$(EPRODS): eltdef  $(HELPIFFILE) $(HELPTSSFILE)
+
+EDONE: eltdef  $(HELPIFFILE) $(HELPTSSFILE)
        $(RM) $(EPRODS) $(ETRASH)
        ./eltdef $(HELPIFFILE)
+       touch EDONE
 
-$(CPRODS):  $(HELPUTILSRC)/context $(HELPTAGSRC)/delim.elt context.dat
+CDONE:  $(HELPUTILSRC)/context $(HELPTAGSRC)/delim.elt context.dat
        $(RM) $(CPRODS) $(CTRASH)
        $(CP) $(HELPTAGSRC)/delim.elt delim.dat  # appl.-specific delim.dat
        $(HELPUTILSRC)/context
+       touch CDONE
 
-$(HELPUTILSRC)/context:
-       cd $(HELPUTILSRC); make context
-
-arc package :
-        if exist util.arc $(CP) build.arc old.arc
-        $(ARCCMD) util.arc *.c *.h makefile
-
-unarc dearc :
-        $(UNARCCMD) util.arc
-
-clean::
-        $(RM) $(PRODUCTS) $(TRASH)
index ca07559acf688a9e0102e0d3faed6ad69b9a3061..5e9da946b2d246dda68de16e0e5afa1037f87980 100644 (file)
@@ -1,10 +1,9 @@
 MAINTAINERCLEANFILES = Makefile.in
 
-bin_PROGRAMS = dthelp_htag1
-
-ARCCMD = arc u
-UNARCCMD = arc x
-ARCDELCMD = arc d
+# Due to the wierd interdepencencies between helptag and parser,
+# disable parallel builds here.  This is some really horrible code and
+# design - not surprising since it dates to 1989.
+.NOTPARALLEL:
 
 HELPTAG       = ..
 HELPTAGSRC    = $(HELPTAG)/helptag
@@ -17,51 +16,28 @@ HELPUTILLIB   = $(HELPTAG)/util/libutil.a
 HELPIFFILE    = $(HELPTAGSRC)/help.if
 HELPTSSFILE   = $(HELPTAGSRC)/htag.tss
 
-XLATESRC  = $(DTHELPSRC)
-XLATEHDRS = $(XLATESRC)/XlationSvc.h $(XLATESRC)/LocaleXlate.h
-XLATESRCS = ${top_srcdir}/lib/DtSvc/DtUtil2/XlationSvc.c \
-           ${top_srcdir}/lib/DtSvc/DtUtil2/LocaleXlate.c
-
-ELTHDRS = $(HELPUTILSRC)/entdef.h $(HELPUTILSRC)/entext.h
-
-# PARSEHDRS are header files used by many parser routines
-PARSEHDRS = $(HELPUTILSRC)/basic.h $(HELPUTILSRC)/trie.h \
-        $(HELPUTILSRC)/common.h $(HELPUTILSRC)/dtddef.h \
-        $(HELPUTILSRC)/dtdext.h $(HELPUTILSRC)/sparse.h \
-        parser.h proto.h
-
-APPLHDRS = $(PARSEHDRS) $(ELTHDRS) \
-        $(HELPUTILSRC)/version.h \
-        $(HELPTAGSRC)/global.h $(HELPTAGSRC)/charconv.h \
-        $(HELPTAGSRC)/roman8.h $(HELPTAGSRC)/fproto.h \
-        ../parser/pval.h ../parser/globdec.h ../parser/signonx.h \
-        ../parser/userinc.h
-
-dthelp_htag1_CFLAGS = -I$(HELPUTILSRC) -I$(HELPPARSERSRC) -I$(HELPELTDEFSRC) \
-                     -I$(XLATESRC)
-
-dthelp_htag1_LDADD = $(HELPUTILLIB)
+XLATESRCS = XlationSvc.c LocaleXlate.c
 
-if HPUX
-dthelp_htag1_LDFLAGS = -Wl,-a archive
-endif
+XLATESRCDIR = ${top_srcdir}/lib/DtSvc/DtUtil2
 
-if SOLARIS
-dthelp_htag1_LDADD += -lm -ldl -lgen
-endif
+$(XLATESRCS): XDONE
 
-dthelp_htag1_SOURCES = custom.c default.c help.c make.c option.c out.c \
-                     special.c xref.c $(XLATESRCS)
+XDONE: $(XLATESRCDIR)/XlationSvc.c $(XLATESRCDIR)/LocaleXlate.c
+       $(RM) $(XLATESRCS)
+       $(CP) $(XLATESRCDIR)/XlationSvc.c XlationSvc.c
+       $(CP) $(XLATESRCDIR)/LocaleXlate.c LocaleXlate.c
+       cd ../parser; $(MAKE) CDONE
+       touch XDONE
 
-dthelp_htag1$(EXEEXT): $(HELPPARSERSRC)/parser
-        $(RM) dthelp_htag1
-        $(CP) $(HELPPARSERSRC)/parser dthelp_htag1
+BUILT_SOURCES = $(XLATESRCS)
+CLEANFILES = $(BUILT_SOURCES) XDONE
 
-arcappl archptag :
-        if exist hptag.arc $(CP) hptag.arc hptag.old
-        $(ARCCMD) hptag.arc *.c *.h linkcmd.dos linkcmd.unx $(HELPDTDFILE) \
-        tex.if makefile makefile.doc make.ini delim.*
+AM_CPPFLAGS = -I. -I$(HELPPARSERSRC) -I$(HELPUTILSRC) \
+           -I$(HELPELTDEFSRC) -I$(XLATESRCDIR) $(DT_INCDIR)
 
-unarcappl unarchptag :
-        $(UNARCCMD) hptag.arc
+# needed by parser/
+noinst_LIBRARIES = libhelptag.a
+libhelptag_a_SOURCES = custom.c default.c help.c make.c option.c       \
+                     special.c out.c xref.c $(XLATESRCS)               \
+                     ../parser/delim.h
 
diff --git a/cde/programs/dthelp/parser/pass1/parser/Makefile.am b/cde/programs/dthelp/parser/pass1/parser/Makefile.am
new file mode 100644 (file)
index 0000000..2352373
--- /dev/null
@@ -0,0 +1,49 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+bin_PROGRAMS = dthelp_htag1
+
+# Due to the wierd interdepencencies between helptag and parser,
+# disable parallel builds here.  This is some really horrible code and
+# design - not surprising since it dates to 1989.
+.NOTPARALLEL:
+
+HELPTAG       = ..
+HELPTAGSRC    = $(HELPTAG)/helptag
+HELPPARSERSRC = $(HELPTAG)/parser
+HELPELTDEFSRC = $(HELPTAG)/eltdef
+HELPDTDFILE   = $(HELPTAGSRC)/hptag.dtd
+HELPUTILSRC   = $(HELPTAG)/util
+HELPBUILDSRC  = $(HELPTAG)/build
+HELPUTILLIB   = $(HELPTAG)/util/libutil.a
+
+AM_CPPFLAGS = -I. -I$(HELPUTILSRC) -I$(HELPTAGSRC) -I$(HELPBUILDSRC) \
+          -I$(HELPELTDEFSRC)
+
+dthelp_htag1_SOURCES = parser.c actutil.c \
+        closent.c code.c cyclent.c dcurelt.c \
+        end.c entity.c \
+        error.c getsign.c \
+        input.c level.c lookent.c \
+        minim.c optstrg.c param.c parent.c \
+        parutil.c pi.c \
+        scan.c setpar.c start.c string.c struct.c \
+        text.c
+
+APPLOBJECTS = ../helptag/libhelptag.a
+
+dthelp_htag1_LDADD = $(APPLOBJECTS) $(HELPUTILLIB) $(DTCLIENTLIBS) $(XTOOLLIB)
+
+CPRODS = case.c context.h delim.h
+CTRASH = error delim.dat
+
+BUILT_SOURCES = $(CPRODS)
+CLEANFILES = $(BUILT_SOURCES) $(CTRASH) CDONE
+
+$(CPRODS): CDONE
+
+CDONE:  $(HELPUTILSRC)/context $(HELPTAGSRC)/delim.par context.dat
+       $(RM) $(CPRODS) $(CTRASH)
+       $(CP) $(HELPTAGSRC)/delim.par delim.dat  # appl.-specific delim.dat
+       $(HELPUTILSRC)/context
+       touch CDONE
+
diff --git a/cde/programs/dthelp/parser/pass1/util/Makefile.am b/cde/programs/dthelp/parser/pass1/util/Makefile.am
new file mode 100644 (file)
index 0000000..4826cd8
--- /dev/null
@@ -0,0 +1,21 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+noinst_LIBRARIES = libutil.a
+
+noinst_PROGRAMS = context fclndir
+
+context_SOURCES = context.c
+
+fclndir_SOURCES = context.c
+
+libutil_a_SOURCES = allwhite.c inctest.c letter.c triedump.c           \
+       triepdmp.c trieplk.c trierset.c upcmp8.c upstrcmp.c wchar.c     \
+       conutil.c error.c exit.c itoa.c lower.c malloc.c openchk.c      \
+       trie.c triecnt.c upper.c whitesp.c basic.h common.h             \
+       dtddef.h entdef.h sparse.h trie.h chartype.h cont.h dtdext.h    \
+       entext.h sref.h version.h
+
+# FIXME I think emptyfil.c and fclndir.c can be deleted?
+
+context_LDADD = libutil.a
+fclndir_LDADD = libutil.a