head     1.1;
branch   1.1.1;
access   ;
symbols  unknown:1.1.1.1 orion:1.1.1;
locks    ; strict;
comment  @# @;


1.1
date     2008.01.09.19.34.17;  author chessman;  state Exp;
branches 1.1.1.1;
next     ;

1.1.1.1
date     2008.01.09.19.34.17;  author chessman;  state Exp;
branches ;
next     ;


desc
@@



1.1
log
@Initial revision
@
text
@#!/bin/bash

getsrcfile()
{
	/bin/echo $i | sed -e 's/.*\///g'
}

srcname_sed()
{
	sed -e 's/\(.*\)\(\..*\)/\1/'
}

extname_sed()
{
	
}

getsrcname()
{
	/bin/echo `getsrcfile` | srcname_sed
}

makedep()
{
	cc=`echo -n $uppersym;echo -n _CC`
	cxx=`echo -n $uppersym;echo -n _CXX`
	/bin/echo "# $srcbasepath : source path"
	/bin/echo "# MK_OUT : output path"
	/bin/echo "# $cc : c compiler"
	/bin/echo "# $cxx : c++ compiler"
	/bin/echo "# OBJ_EXT : object file extension"
	/bin/echo "# MK_RM : rm command\n\n"

	for i in $srcfilter;  do
		srcfile=`getsrcfile`
		srcname=`/bin/echo $srcfile | srcname_sed`

		/bin/echo -n "\$(MK_OUT)/$srcname.\$(OBJ_EXT) : $srcpathstr/$srcfile\n\t\$("

		srcext=`/bin/echo $srcfile | sed -e 's/.*\.//g'`
		srcext=`echo $srcext | tr [[:upper:]] [[:lower:]]`
		case $srcext in
			c)
			/bin/echo -n $cc
			;;
			cc|cxx|cpp)
			/bin/echo -n $cxx
			;;
		esac
		/bin/echo ") $srcpathstr/$srcfile\n"
	done

	/bin/echo "clean_$lowersym:"

	for i in $srcfilter;  do
		srcname=`getsrcname`
		/bin/echo "\t\$(MK_RM) \$(MK_OUT)/$srcname.\$(OBJ_EXT)"
	done

	/bin/echo "\n# end of $depname.mk\n"
}

makemod()
{
	/bin/echo "# MK_OUT : output path"
	/bin/echo "# OBJ_EXT : object file extension\n\n"

	/bin/echo -n $uppersym;/bin/echo -n _MODULE=
	for i in $srcfilter; do
		/bin/echo -n " \$(MK_OUT)/`getsrcname`.\$(OBJ_EXT)"
	done

	/bin/echo "\n\n# end of $modname.mk\n"
}


symbol=$1
basepath=$2
relpath=$3
srcpathstr=$4
fnprefix=$5


if [ "$basepath" = "" ]; then
	/bin/echo -n "$0\n\
symbol\n\
basepath : base path\n\
[relpath] : relative path\
[srcpathstr] : string to be used for source path string.\n\
  ( it is not symbol, so \$() should be properly used )\n\
[fnprefix] : prefix to generate the name of output files\n\
Symbols in [] are optional parameters and they should be . to use default value.\n"
else
	# generate symbols
	uppersym=`/bin/echo -n $symbol | tr [[:lower:]] [[:upper:]]`
	lowersym=`/bin/echo -n $symbol | tr [[:upper:]] [[:lower:]]`
	if [ "$fnprefix" = "" ] || [ "$fnprefix" = "." ]; then
		depname=`echo -n $lowersym;echo -n dep`
		modname=`echo -n $lowersym;echo -n mod`
	else
		depname=`echo -n $fnprefix;echo -n dep`
		modname=`echo -n $fnprefix;echo -n mod`
	fi
	srcbasepath=`echo -n $uppersym;echo -n _SRCPATH`
	srcpath=\$\($srcbasepath\)

	# check relative path was supplied
	if [ ! "$relpath" = "" ] && [ ! "$relpath" = "." ]; then
		basepath=$basepath/$relpath
		srcpath=$srcpath/$relpath
	fi
	unset relpath

	if [ "$srcpathstr" = "" ] || [ "$srcpathstr" = "." ]; then
		srcpathstr=$srcpath
	else
		srcbasepath=$srcpathstr
	fi
	unset $srcpath


	srcfilter=$basepath/*.[cC]*


	# check there are no source files
	nosrc=1
	for i in $srcfilter ; do
		if [ -f $i ]; then
			nosrc=0
			break
		fi
	done

	if [ $nosrc -eq 1 ]; then
		/bin/echo No source.
	else

		/bin/echo generating...

		makedep > $depname.mk
		tounix $depname.mk
		echo $depname.mk done.

		makemod > $modname.mk
		tounix $modname.mk
		echo $modname.mk done.

		cat $depname.mk | sed -e 's/\//\\/g;s/\.mk/\.d/g'  > $depname.d
		tounix -r $depname.d
		echo $depname.d done.

		cat $modname.mk | sed -e 's/\//\\/g;s/\.mk/\.d/g'  > $modname.d
		tounix -r $modname.d
		echo $modname.d done.

		cat $depname.mk | sed -e 's/\//:/g;s/\.mk/\.m/g'  > $depname.m
		tounix -r $depname.m
		echo $depname.d done.

		cat $modname.mk | sed -e 's/\//:/g;s/\.mk/\.m/g'  > $modname.m
		tounix -r $modname.m
		echo $modname.d done.


		/bin/echo done
	fi
fi

# end of makedep

@


1.1.1.1
log
@make
@
text
@@
