/* * C message catalog support */ MSGCC = msgcc MSGCCFLAGS = -M-set=$(_PACKAGE_ID) MSGCATDIR = msgs /* * :MSGFUN: _TRANSLATE_ macro ... [ :foo: _foo_ macro ... ] */ ":MSGFUN:" : .MAKE .OPERATOR local T M M = _TRANSLATE_ for T $(>) if T == ":*:" M := $(T:/:/_/G) else MSGCCFLAGS += -D$(T)=$(M) end end /* * :MSGKEY: prereq ... * additional --keys command on prereqs to standard output */ ":MSGKEY:" : .MAKE .OPERATOR local T if "$(@:V)" eval $$(MSGCATDIR)/msgcat.mso : $(>) { $(@:V) ;} | $(SED) 's,^,str ,' > $$(<) end else $(MSGCATDIR)/msgcat.mso : $(>) $(*) --'??keys' > $(<) 2>&1 || true end _PACKAGE_ID = $(LICENSEINFO:B:/^$(LICENSEFILE)$/LIC/) (MSGCC) (MSGCCFLAGS) : .PARAMETER .COMMAND.msg : .USE .COMMAND (MSGCC) (MSGCCFLAGS) (CCLDFLAGS) $$(LDLIBRARIES) $(MSGCC) $(MSGCCFLAGS) $(CCLDFLAGS) $(&:T=D:N!=-[DIUl]*) -o $(<) $(*) .MSGCAT.LIST. : .FUNCTION local D I O X :: msgcat.h msgcat.key O := $(CATALOG).msg for X $(...:A=.COMMAND.o|.ARCHIVE.o:T!=S:T=F) I += $(X) $(*$(X):N=*@($(CC.SUFFIX.OBJECT)):D=$(MSGCATDIR):B:S=.mso) $(*$(X):N=[-+]l*:/[-+]l\(.*\)/lib\1.msg/) end for X $(~.ALL) if "$(X:A=$(X).sh)" I += $(X) $(X:D=$(MSGCATDIR):B:S=.mso) end end if I != "" I += $(MSGCATDIR)/msgcat.mso $(O) : .COMMAND.msg $(I) $(I) : .DONTCARE if ! "$(MSGCATDIR:T=F)" O := $(MSGCATDIR) - $(O) $(MSGCATDIR) : test -d $(<) || mkdir $(<) end return $(O) end .MSGCAT : .ONOBJECT $$(.MSGCAT.LIST.) $(MSGCATDIR)/%.mso : %.c (MSGCC) (MSGCCFLAGS) $(MSGCC) $(MSGCCFLAGS) $(CPPFLAGS) -c $(>) -o $(<) $(MSGCATDIR)/%.mso : %.C (MSGCC) (MSGCCFLAGS) $(MSGCC) $(MSGCCFLAGS) $(CPPFLAGS) -c $(>) -o $(<) $(MSGCATDIR)/%.mso : %.cpp (MSGCC) (MSGCCFLAGS) $(MSGCC) $(MSGCCFLAGS) $(CPPFLAGS) -c $(>) -o $(<) $(MSGCATDIR)/%.mso : %.sh $(SHELL) -D $(>) | sed -e 's,^,raw ,' > $(<) $(MSGCATDIR)/%.mso : %.key if test -x $(>) then $(>) | sed 's,^,str ,' > $(<) fi