diff mk/lib.mk @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children bb115deb6fb2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/lib.mk	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,72 @@
+#
+# lib.mk - build a library, in portable make.
+#
+# Before including, set:
+#    LIB                         library to build
+#    LIBTYPE                     LIB or SHLIB (or $(AGLIBTYPE))
+#
+# and set:
+#    SRCS                        sources
+#    RCFILES (optional)          Windows resource files
+#    SYNS (optional)             AG syntax files
+#    SYNOUTPUTEXT (optional)     output suffix for AG files
+#    AGFILEDEST (optional)       destination for AG files ("here" or "srcdir")
+#
+
+SYNOUTPUTEXT?=.cpp
+AGFILEDEST?=srcdir
+
+include $(BUILDTOP)/config.mk
+
+# beforeall used by: cg46.h in anagram
+# afterall used by: none
+
+all: beforeall doall afterall
+beforeall doall afterall:;
+
+# BSD make has .WAIT to make beforeall/afterall work, but gmake doesn't.
+.NOTPARALLEL:
+
+doall: all.$(LIBTYPE)
+all.LIB: $(LIB)$(LIBEXT)
+all.SHLIB: $(LIB)$(SHLIBEXT)
+TYPE=$(LIBTYPE)
+
+include rules.mk
+include depend.mk
+
+$(LIB)$(LIBEXT): $(OBJS) $(MYLIBS)
+	@echo '        [DEP]'
+	@$(MKDEP)
+	@echo '        [LIB]     $@'
+	@$(LDR) $(LIB)$(LIBEXT) $(OBJS) $(RESFILES) $(MYLIBS)
+
+$(LIB)$(SHLIBEXT): $(OBJS) $(MYLIBS)
+	@echo '        [DEP]'
+	@$(MKDEP)
+	@echo '        [SHLIB]   $@'
+	@$(SHLDCC) $(OBJS) $(RESFILES) $(MYLIBS) -o $@
+
+rules:
+	@$(TOP)/mk/include-defs.sh '$(INCDIRS)' > rules.mk
+	@$(TOP)/mk/compile-rules.sh '$(SRCS)' '$(RCFILES)' >> rules.mk
+	@$(TOP)/mk/agfile-rules.sh $(AGFILEDEST) '$(SYNS)' '$(SYNOUTPUTEXT)' \
+	    >> rules.mk
+#	@echo '        [RULES]'
+
+depend:
+	@echo '        [DEP]'
+	@$(MKDEP)
+
+clean:
+	@echo '        [RM]      $(CLEANFILES) *~'
+	@rm -f $(CLEANFILES) *~
+
+distclean: clean
+	@echo '        [RM]      $(DISTCLEANFILES) *~'
+	@rm -f $(DISTCLEANFILES) *~
+
+.PHONY: all rules depend clean distclean
+.PHONY: beforeall doall afterall
+.PHONY: beforedepend dodepend afterdepend
+.PHONY: all.LIB all.SHLIB