#! /bin/sh # This script converts Makefile.in.in and config.c.in into Makefile.in # and config.c, based on the module definitions found in the file # Setup. NL="\\ " sed -e 's/#.*//' -e '/^[ ]*$/d' ${1-Setup} | ( DEFS= MODS= OBJS= LIBS= RULES= while read line do case $line in *=*) DEFS="$DEFS$line$NL"; continue;; esac objs= cpps= set $line for arg do case $arg in -[IDUC]*) cpps="$cpps $arg";; -[Ll]*) LIBS="$LIBS $arg";; *.a) LIBS="$LIBS $arg";; *.o) objs="$objs $arg";; *.*) echo 1>&2 "bad word $arg in $line" exit 1;; [a-zA-Z_]*) MODS="$MODS $arg";; *) echo 1>&2 "bad word $arg in $line" exit 1;; esac done for obj in $objs do src=`basename $obj .o`.c RULES="$RULES$obj: $src; \$(CC) \$(CFLAGS) $cpps -c $src$NL" done OBJS="$OBJS $objs" done EXTDECLS= INITBITS= for mod in $MODS do EXTDECLS="${EXTDECLS}extern void init$mod();$NL" INITBITS="${INITBITS} {\"$mod\", init$mod},$NL" done sed -e " /MARKER 1/i$NL$EXTDECLS /MARKER 2/i$NL$INITBITS " config.c.in >config.c sed -e " s%@MODOBJS@%$OBJS% s%@MODLIBS@%$LIBS% /Rules added by ..makesetup/a$NL$NL$RULES /Definitions added by ..makesetup/a$NL$NL$DEFS " Makefile.in.in >Makefile.in )