view mk/lib.mk @ 6:607e3be6bad8

Adjust to the moving target called the C++ standard. Apparently nowadays it's not allowed to define an explicit copy constructor but not an assignment operator. Consequently, defining the explicit copy constructor in terms of the implicit/automatic assignment operator for general convenience no longer works. Add assignment operators. Caution: not tested with the IBM compiler, but there's no particular reason it shouldn't work.
author David A. Holland
date Mon, 30 May 2022 23:46:22 -0400
parents 13d2b8934445
children bb115deb6fb2
line wrap: on
line source

#
# 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