⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makesetup

📁 minimal python variant for small footprint apps like embedded apps
💻
字号:
#! /bin/sh# Convert templates into Makefile and config.c, based on the module# definitions found in the file Setup.## Usage: makesetup [-s dir] [-c file] [-m file] [Setup] ... [-n [Setup] ...]## Options:# -s directory: alternative source directory (default derived from $0)# -c file:      alternative config.c template (default $srcdir/config.c.in)# -c -:         don't write config.c# -m file:      alternative Makefile template (default ./Makefile.pre)# -m -:         don't write Makefile## Remaining arguments are one or more Setup files (default ./Setup).# Setup files after a -n option are used for their variables, modules# and libraries but not for their .o files.## See Setup.in for a description of the format of the Setup file.## The following edits are made:## Copying config.c.in to config.c:# - insert an identifying comment at the start# - for each <module> mentioned in Setup before *noconfig*:#   + insert 'extern void init<module>();' before MARKER 1#   + insert '{"<module>", initmodule},' before MARKER 2## Copying Makefile.pre to Makefile:# - insert an identifying comment at the start# - replace _MODOBJS_ by the list of objects from Setup (except for#   Setup files after a -n option)# - replace _MODLIBS_ by the list of libraries from Setup# - for each object file mentioned in Setup, append a rule#   '<file>.o: <file>.c; <build commands>' to the end of the Makefile# - for each module mentioned in Setup, append a rule#   which creates a shared library version to the end of the Makefile# - for each variable definition found in Setup, insert the definition#   before the comment 'Definitions added by makesetup'# Loop over command line optionsusage='usage: makesetup [-s srcdir] [-c config.c.in] [-m Makefile.pre]                 [Setup] ... [-n [Setup] ...]'srcdir=''config=''makepre=''noobjects=''doconfig=yeswhile :do	case $1 in	-s)	shift; srcdir=$1; shift;;	-c)	shift; config=$1; shift;;	-m)	shift; makepre=$1; shift;;	--)	shift; break;;	-n)	noobjects=yes;;	-*)	echo "$usage" 1>&2; exit 2;;	*)	break;;	esacdone# Set default srcdir and config if not set by command line# (Not all systems have dirname)case $srcdir in'')	case $0 in	*/*)	srcdir=`echo $0 | sed 's,/[^/]*$,,'`;;	*)	srcdir=.;;	esac;;esaccase $config in'')	config=$srcdir/config.c.in;;esaccase $makepre in'')	makepre=Makefile.pre;;esac# Newline for sed i and a commandsNL='\'# Main loopfor i in ${*-Setup}do	case $i in	-n)	echo '*noobjects*';;	*)	echo '*doconfig*'; cat "$i";;	esacdone |sed -e 's/[ 	]*#.*//' -e '/^[ 	]*$/d' |(	rulesf="@rules.$$"	trap 'rm -f $rulesf' 0 1 2 3	echo "# Rules appended by makedepend" >$rulesf	DEFS=	MODS=	SHAREDMODS=	OBJS=	LIBS=	LOCALLIBS=	BASELIBS=	while read line	do		# to handle backslashes for sh's that don't automatically		# continue a read when the last char is a backslash		while echo $line | grep '\\$' > /dev/null		do			read extraline			line=`echo $line| sed s/.$//`$extraline		done		# Output DEFS in reverse order so first definition overrides		case $line in		*=*)	DEFS="$line$NL$DEFS"; continue;;		'include '*)	DEFS="$line$NL$DEFS"; continue;;		'*noobjects*')			case $noobjects in			yes)	;;			*)	LOCALLIBS=$LIBS; LIBS=;;			esac			noobjects=yes;			continue;;		'*doconfig*')	doconfig=yes; continue;;		'*static*')	doconfig=yes; continue;;		'*noconfig*')	doconfig=no; continue;;		'*shared*')	doconfig=no; continue;;		esac		srcs=		cpps=		libs=		mods=		skip=		for arg in $line		do			case $skip in			libs)	libs="$libs $arg"; skip=; continue;;			cpps)	cpps="$cpps $arg"; skip=; continue;;			srcs)	srcs="$srcs $arg"; skip=; continue;;			esac			case $arg in			-[IDUC]*)	cpps="$cpps $arg";;			-Xlinker)	libs="$libs $arg"; skip=libs;;			-rpath)		libs="$libs $arg"; skip=libs;;			-[A-Zl]*)	libs="$libs $arg";;			*.a)		libs="$libs $arg";;			*.so)		libs="$libs $arg";;			*.sl)		libs="$libs $arg";;			/*.o)		libs="$libs $arg";;			*.o)		srcs="$srcs `basename $arg .o`.c";;			*.[cC])		srcs="$srcs $arg";;			*.cc)		srcs="$srcs $arg";;			*.c++)		srcs="$srcs $arg";;			*.cxx)		srcs="$srcs $arg";;			*.cpp)		srcs="$srcs $arg";;			\$*)		libs="$libs $arg"					cpps="$cpps $arg";;			*.*)		echo 1>&2 "bad word $arg in $line"					exit 1;;			-u)		skip=libs; libs="$libs -u";;			[a-zA-Z_]*)	mods="$mods $arg";;			*)		echo 1>&2 "bad word $arg in $line"					exit 1;;			esac		done		case $doconfig in		yes)			LIBS="$LIBS $libs"			MODS="$MODS $mods"			;;		esac		case $noobjects in		yes)	continue;;		esac		objs=''		for src in $srcs		do			case $src in			*.c)   obj=`basename $src .c`.o; cc='$(CC)';;			*.cc)  obj=`basename $src .cc`.o; cc='$(CCC)';;			*.c++) obj=`basename $src .c++`.o; cc='$(CCC)';;			*.C)   obj=`basename $src .C`.o; cc='$(CCC)';;			*.cxx) obj=`basename $src .cxx`.o; cc='$(CCC)';;			*.cpp) obj=`basename $src .cpp`.o; cc='$(CCC)';;			*)     continue;;			esac			objs="$objs $obj"			case $src in			glmodule.c) ;;			/*) ;;			*) src='$(srcdir)/'$src;;			esac			case $doconfig in			no)	cc="$cc \$(CCSHARED)";;			esac			rule="$obj: $src; $cc $cpps \$(CFLAGS) -c $src"			echo "$rule" >>$rulesf		done		case $doconfig in		yes)	OBJS="$OBJS $objs";;		esac		for mod in $mods		do			case $objs in			*$mod.o*)	base=$mod;;			*)		base=${mod}module;;			esac			file="$base\$(SO)"			case $doconfig in			no)	SHAREDMODS="$SHAREDMODS $file";;			esac			rule="$file: $objs"			rule="$rule; \$(LDSHARED) $objs $libs -o $file"			echo "$rule" >>$rulesf		done	done	case $SHAREDMODS in	'')	;;	*)	DEFS="SHAREDMODS=$SHAREDMODS$NL$DEFS";;	esac	case $noobjects in	yes)	BASELIBS=$LIBS;;	*)	LOCALLIBS=$LIBS;;	esac	LIBS='$(LOCALMODLIBS) $(BASEMODLIBS)'	DEFS="BASEMODLIBS=$BASELIBS$NL$DEFS"	DEFS="LOCALMODLIBS=$LOCALLIBS$NL$DEFS"	EXTDECLS=	INITBITS=	for mod in $MODS	do#		EXTDECLS="${EXTDECLS}extern void init$mod();$NL"		INITBITS="${INITBITS}	{\"$mod\", init$mod},$NL"	done	case $config in	-)  ;;	*)  sed -e "		1i$NL/* Generated automatically from $config by makesetup. */		/MARKER 1/i$NL$EXTDECLS 		/MARKER 2/i$NL$INITBITS		" $config >config.c	    ;;	esac	case $makepre in	-)	;;	*)	sedf="@sed.in.$$"		trap 'rm -f $sedf' 0 1 2 3		echo "1i\\" >$sedf		str="# Generated automatically from $makepre by makesetup."		echo "$str" >>$sedf		echo "s%_MODOBJS_%$OBJS%" >>$sedf		echo "s%_MODLIBS_%$LIBS%" >>$sedf		echo "/Definitions added by makesetup/a$NL$NL$DEFS" >>$sedf		sed -f $sedf $makepre >Makefile		cat $rulesf >>Makefile		rm -f $sedf	    ;;	esac	rm -f $rulesf)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -