view mk/progs-rules.sh @ 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
line wrap: on
line source

#!/bin/sh
# progs-rules.sh - generate make rules for progs.mk
# usage: progs-rules.sh 'srcs' > rules.mk

if [ $# != 1 ]; then
    echo "$0: usage: $0 'srcs'" 1>&2
    exit 1
fi

SRCS="$1"

PROGS=`echo " $SRCS " | sed 's, \./, ,g;s,\.[^\.]* ,$(EXEEXT) ,g'`
PROGS=`echo "$PROGS" | sed 's/ *$//;s/^ *//'`
echo "PROGS=$PROGS"

for S in $SRCS; do
    echo $S | awk '
	{
	    src = $1;
	    sub("^\\./", "", src);
	    base = src;
	    sub("\\.[^\\.]*$", "", base);
	    obj = base "$(OBJEXT)";
	    prog = base "$(EXEEXT)";

	    printf "doall: %s\n", prog;
	    printf "%s: %s $(MYLIBS)\n", prog, obj;
	    printf "\t@echo \"        [LINK]    %s\"\n", prog;
	    printf "\t@$(LDCC) $(LDFLAGS) %s $(MYLIBS) $(LIBS) -o $@\n", obj;
	    printf "\t@echo \"        [DEP]\"\n";
	    printf "\t@$(MKDEP)\n";
	    printf "\n";
	}
    '
done