#!/bin/bash

# USAGE
#   mkmake
#
# FUNCTION
#   Creates the makefiles for SACLIB.

mkdir -p $saclib/lib/objo
mkdir -p $saclib/lib/objd

MAKEFILE=$saclib/lib/objo/makefile

#
## Write header
#

cat > $MAKEFILE <<\EOF
# FILE
#   makefile (automatically generated by 'mkmake')
#
# USAGE
#   make [SACFLAG=<flag>] [EXTENSION=<character>]
#   where <flag> is a compilation flag such as '-O' and <character> is the
#   corresponding extension character which will be appended to the name of
#   the compiled library.
#       E.g. if <flag> is -g and <character> is d, the library will be
#   compiled with the debug option set and the library name will be
#   "saclibg.a".
# 
# REMARK
#   This file should not be modified. Modify 'mkmake' instead and then use it
#   to create the new makefile. 

# Macros

SRCDIR   = ${saclib}/src
TARGET   = ${saclib}/lib/saclib${EXTENSION}.a
CFLAGS   = -I${saclib}/include -c ${SACFLAG}
AFLAGS   = -I${saclib}/include -P
AS       = as
AR       = ar
RANLIB   = ranlib

# Object files

OBJS1 = \
EOF

#
## Write list of object files
#

pushd >/dev/null $saclib/src
'ls' [A-H]*.[cs] 2> /dev/null |\
awk -F. '{if (prev) printf("\\\n%s.o",$1);\
          else {printf("%s.o",$1); prev = 1;}}' >>$MAKEFILE
echo " " >> $MAKEFILE
echo "OBJS2a = \\" >> $MAKEFILE
'ls' I[A-P]*.[cs] 2> /dev/null |\
awk -F. '{if (prev) printf("\\\n%s.o",$1);\
          else {printf("%s.o",$1); prev = 1;}}' >>$MAKEFILE
echo " " >> $MAKEFILE
echo "OBJS2b = \\" >> $MAKEFILE
'ls' I[Q-z]*.[cs] 2> /dev/null |\
awk -F. '{if (prev) printf("\\\n%s.o",$1);\
          else {printf("%s.o",$1); prev = 1;}}' >>$MAKEFILE
echo " " >> $MAKEFILE
echo "OBJS3 = \\" >> $MAKEFILE
'ls' [J-P]*.[cs] 2> /dev/null |\
awk -F. '{if (prev) printf("\\\n%s.o",$1);\
          else {printf("%s.o",$1); prev = 1;}}' >>$MAKEFILE
echo " " >> $MAKEFILE
echo "OBJS4 = \\" >> $MAKEFILE
'ls' [Q-Za-z]*.[cs] 2> /dev/null |\
awk -F. '{if (prev) printf("\\\n%s.o",$1);\
          else {printf("%s.o",$1); prev = 1;}}' >>$MAKEFILE



#
## Write target dependencies
#

cat >> $MAKEFILE <<\EOF
 

# Target dependencies

new: ${OBJS1} ${OBJS2a} ${OBJS2b} ${OBJS3} ${OBJS4}
	rm -f ${TARGET}
	${AR} cq ${TARGET} ${OBJS1}
	${AR} cq ${TARGET} ${OBJS2a}
	${AR} cq ${TARGET} ${OBJS2b}
	${AR} cq ${TARGET} ${OBJS3}
	${AR} cq ${TARGET} ${OBJS4}
#       Use "ar ts" if your system does not have "ranlib".
#	${AR} ts ${TARGET}
#       Use "ranlib" if your system's "ar" does not have the option "s".
	${RANLIB} ${TARGET}
	@echo "Created '${TARGET}'."

EOF

#
## Write object dependencies
#

cat >> $MAKEFILE <<\EOF


# Object dependencies

EOF


'ls' *.[c] 2> /dev/null |\
awk -F. '{printf "%s.o: ${SRCDIR}/%s\n\t${CC} ${CFLAGS} ${SRCDIR}/%s\n",$1,$0,$0}' >>$MAKEFILE

'ls' *.[s] 2> /dev/null |\
awk -F. '{printf "%s.o: ${SRCDIR}/%s\n\t${AS} ${AFLAGS} ${SRCDIR}/%s -o %s.o\n",$1,$0,$0,$1}' >>$MAKEFILE

echo " " >>$MAKEFILE
echo "# END OF FILE makefile" >>$MAKEFILE

#
## Done
# 

'cp' $MAKEFILE $saclib/lib/objd
popd >/dev/null
echo "Made '$MAKEFILE'"
echo "and copies in '$saclib/lib/objd.'"
