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

📄 configure

📁 早期freebsd实现
💻
📖 第 1 页 / 共 2 页
字号:
# split ${srcdir}/configure.in into common, per-host, per-target,# and post-target parts.  Post-target is optional.sed -e '/^# per\-host:/,$d' ${srcdir}/configure.in > ${tmpfile}.comsed -e '1,/^# per\-host:/d' -e '/^# per\-target:/,$d' ${srcdir}/configure.in > ${tmpfile}.hstif grep '^# post-target:' ${srcdir}/configure.in >/dev/null ; then  sed -e '1,/^# per\-target:/d' -e '/^# post\-target:/,$d' ${srcdir}/configure.in > ${tmpfile}.tgt  sed -e '1,/^# post\-target:/d' ${srcdir}/configure.in > ${tmpfile}.poselse  sed -e '1,/^# per\-target:/d' ${srcdir}/configure.in > ${tmpfile}.tgt  echo >${tmpfile}.posfi### do common part of configure.in. ${tmpfile}.com# some sanity checks on configure.incase "${srctrigger}" in"")	echo '***' srctrigger not set in ${PWD=`pwd`}/configure.in.  1>&2	exit 1	;;*) ;;esacresult=`${configsub} ${host_alias}`host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`host=${host_cpu}-${host_vendor}-${host_os}. ${tmpfile}.hstresult=`${configsub} ${target_alias}`target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'`target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'`target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'`target=${target_cpu}-${target_vendor}-${target_os}. ${tmpfile}.tgt# Find the source files, if location was not specified.case "${srcdir}" in"")	srcdirdefaulted=1	srcdir=.	if [ ! -r ${srctrigger} ] ; then		srcdir=..	fi	;;*) ;;esacif [ ! -r ${srcdir}/${srctrigger} ] ; then	case "${srcdirdefaulted}" in	"") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/${srcdir}" 1>&2 ;;	*)  echo '***' "${progname}: Can't find ${srcname} sources in ${PWD=`pwd`}/. or ${PWD=`pwd`}/.." 1>&2 ;;	esac	echo '***' \(At least ${srctrigger} is missing.\) 1>&2	exit 1fitooldir="\$(libdir)/${target_alias}"if [ "${host_alias}" != "${target_alias}" ] ; then    if [ "${program_prefix}" = "" ] ; then	if [ "${program_suffix}" = "" ] ; then 	    if [ "${program_transform_name}" = "" ] ; then		program_prefix=${target_alias}- ;	    fi	fi    fifi# Merge program_prefix and program_suffix onto program_transform_name# Use a double $ so that make ignores itif [ "${program_suffix}" != "" ] ; then    program_transform_name="-e s/\$\$/${program_suffix}/ ${program_transform_name}"fiif [ "${program_prefix}" != "" ] ; then    program_transform_name="-e s/^/${program_prefix}/ ${program_transform_name}"fifor subdir in . ${subdirs} ; do    # ${subdir} is relative path from . to the directory we're currently    # configuring.    # ${invsubdir} is inverse of ${subdir), *with* trailing /, if needed.    invsubdir=`echo ${subdir}/ | sed -e 's|\./||g' -e 's|[^/]*/|../|g'`    ### figure out what to do with srcdir    case "${srcdir}" in	".")  # no -srcdir option.  We're building in place.		makesrcdir=. ;;	/*) # absolute path		makesrcdir=`echo ${srcdir}/${subdir} | sed -e 's|/\.$||'`		;;	*) # otherwise relative		case "${subdir}" in		.) makesrcdir=${srcdir} ;;		*) makesrcdir=`echo ${subdir} | sed -e 's:[^./][^./]*:..:g'`/${srcdir}/${subdir} ;;		esac		;;    esac    if [ "${subdir}/" != "./" ] ; then	Makefile=${subdir}/Makefile    fi    if [ ! -d ${subdir} ] ; then	mkdir ${subdir}    fi    case "${removing}" in    "")	case "${subdir}" in	.) ;;	*) eval echo Building in ${subdir} ${redirect} ;;	esac	# FIXME Should this be done recursively ??? (Useful for e.g. gdbtest)	# Set up the list of links to be made.	# ${links} is the list of link names, and ${files} is the list of names to link to.	# Make the links.	configlinks="${links}"	if [ -r ${subdir}/config.status ] ; then		mv -f ${subdir}/config.status ${subdir}/config.back	fi	while [ -n "${files}" ] ; do		# set file to car of files, files to cdr of files		set ${files}; file=$1; shift; files=$*		set ${links}; link=$1; shift; links=$*		if [ ! -r ${srcdir}/${file} ] ; then			echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2			echo '***' "since the file \"${file}\" does not exist." 1>&2			exit 1		fi		${remove} -f ${link}		# Make a symlink if possible, otherwise try a hard link		${symbolic_link} ${srcdir}/${file} ${link} 2>/dev/null || ${hard_link} ${srcdir}/${file} ${link}		if [ ! -r ${link} ] ; then			echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2			exit 1		fi		echo "Linked \"${link}\" to \"${srcdir}/${file}\"."	done	# Create a .gdbinit file which runs the one in srcdir	# and tells GDB to look there for source files.	if [ -r ${srcdir}/${subdir}/.gdbinit ] ; then		case ${srcdir} in		.) ;;		*) cat > ${subdir}/.gdbinit <<EOF# ${NO_EDIT}dir .dir ${makesrcdir}source ${makesrcdir}/.gdbinitEOF			;;		esac	fi	# Install a makefile, and make it set VPATH	# if necessary so that the sources are found.	# Also change its value of srcdir.	# NOTE: Makefile generation constitutes the majority of the time in configure.  Hence, this section has	# been somewhat optimized and is perhaps a bit twisty.	# code is order so as to try to sed the smallest input files we know.	# the three makefile fragments MUST end up in the resulting Makefile in this order: target, host, and site.	# so do these separately because I don't trust the order of sed -e expressions.	# Conditionalize for this site from "Makefile.in" (or whatever it's called) into Makefile.tem	rm -f ${subdir}/Makefile.tem	case "${site}" in	"") cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem ;;	*)		site_makefile_frag=${srcdir}/config/ms-${site}		if [ -f ${site_makefile_frag} ] ; then			sed -e "/^####/  r ${site_makefile_frag}" ${srcdir}/${subdir}/${Makefile_in} \				> ${subdir}/Makefile.tem		else			cp ${srcdir}/${subdir}/${Makefile_in} ${subdir}/Makefile.tem			site_makefile_frag=		fi		;;	esac	# working copy now in ${subdir}/Makefile.tem	# Conditionalize the makefile for this host.	rm -f ${Makefile}	case "${host_makefile_frag}" in	"") mv ${subdir}/Makefile.tem ${Makefile} ;;	*)		if [ ! -f ${host_makefile_frag} ] ; then			host_makefile_frag=${srcdir}/${host_makefile_frag}		fi		if [ -f ${host_makefile_frag} ] ; then			sed -e "/^####/  r ${host_makefile_frag}" ${subdir}/Makefile.tem > ${Makefile}		else			echo '***' Expected host makefile fragment \"${host_makefile_frag}\" 1>&2			echo '***' is missing in ${PWD=`pwd`}. 1>&2			mv ${subdir}/Makefile.tem ${Makefile}		fi	esac	# working copy now in ${Makefile}	# Conditionalize the makefile for this target.	rm -f ${subdir}/Makefile.tem	case "${target_makefile_frag}" in	"") mv ${Makefile} ${subdir}/Makefile.tem ;;	*)		if [ ! -f ${target_makefile_frag} ] ; then			target_makefile_frag=${srcdir}/${target_makefile_frag}		fi		if [ -f ${target_makefile_frag} ] ; then			sed -e "/^####/  r ${target_makefile_frag}" ${Makefile} > ${subdir}/Makefile.tem		else			mv ${Makefile} ${subdir}/Makefile.tem			target_makefile_frag=		fi		;;	esac	# real copy now in ${subdir}/Makefile.tem	# prepend warning about editting, and a bunch of variables.	rm -f ${Makefile}	cat > ${Makefile} <<EOF# ${NO_EDIT}VPATH = ${makesrcdir}links = ${configlinks}host_alias = ${host_alias}host_cpu = ${host_cpu}host_vendor = ${host_vendor}host_os = ${host_os}host_canonical = ${host_cpu}-${host_vendor}-${host_os}target_alias = ${target_alias}target_cpu = ${target_cpu}target_vendor = ${target_vendor}target_os = ${target_os}target_canonical = ${target_cpu}-${target_vendor}-${target_os}EOF	case "${target_makefile_frag}" in	"") ;;	/*)  echo target_makefile_frag = ${target_makefile_frag} >>${Makefile} ;;	*)  echo target_makefile_frag = ${invsubdir}${target_makefile_frag} >>${Makefile} ;;	esac	case "${host_makefile_frag}" in	"") ;;	/*)  echo host_makefile_frag = ${host_makefile_frag} >>${Makefile} ;;	*)  echo host_makefile_frag = ${invsubdir}${host_makefile_frag} >>${Makefile} ;;	esac	if [ "${site_makefile_frag}" != "" ] ; then	    echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile}	fi 	# fixme: this shouldn't be in configure.	# Define macro CROSS_COMPILE in compilation if this is a cross-compiler.	case "${host_alias}" in	"${target_alias}")		echo "ALL=all.internal" >> ${Makefile}		;;	*)		echo "CROSS=-DCROSS_COMPILE" >> ${Makefile}		echo "ALL=all.cross" >> ${Makefile}		;;	esac	# reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,	# remove any form feeds.	if [ -z "${subdirs}" ]; then	    rm -f ${subdir}/Makefile.tem2	    sed -e "s:^SUBDIRS[ 	]*=.*$:SUBDIRS = ${configdirs}:" \		-e "s:^NONSUBDIRS[ 	]*=.*$:NONSUBDIRS = ${noconfigdirs}:" \		${subdir}/Makefile.tem > ${subdir}/Makefile.tem2	    rm -f ${subdir}/Makefile.tem	    mv ${subdir}/Makefile.tem2 ${subdir}/Makefile.tem	fi	sed -e "s:^prefix[ 	]*=.*$:prefix = ${prefix}:" \		-e "s:^exec_prefix[ 	]*=.*$:exec_prefix = ${exec_prefix}:" \		-e "s:^srcdir[ 	]*=.*$:srcdir = ${makesrcdir}:" \		-e "s///" \		-e "s:^program_prefix[ 	]*=.*$:program_prefix = ${program_prefix}:" \		-e "s:^program_suffix[ 	]*=.*$:program_suffix = ${program_suffix}:" \		-e "s:^program_transform_name[ 	]*=.*$:program_transform_name = ${program_transform_name}:" \		-e "s:^tooldir[ 	]*=.*$:tooldir = ${tooldir}:" \		${subdir}/Makefile.tem >> ${Makefile}	# final copy now in ${Makefile}	rm -f ${subdir}/Makefile.tem	case "${host_makefile_frag}" in	"") using= ;;	*) using="and \"${host_makefile_frag}\"" ;;	esac	case "${target_makefile_frag}" in	"") ;;	*) using="${using} and \"${target_makefile_frag}\"" ;;	esac	case "${site_makefile_frag}" in	"") ;;	*) using="${using} and \"${site_makefile_frag}\"" ;;	esac	newusing=`echo "${using}" | sed 's/and/using/'`	using=${newusing}	echo "Created \"${Makefile}\" in" ${PWD=`pwd`} ${using}	. ${tmpfile}.pos	# describe the chosen configuration in config.status.	# Make that file a shellscript which will reestablish	# the same configuration.  Used in Makefiles to rebuild	# Makefiles.	case "${norecursion}" in	"") arguments="${arguments} -norecursion" ;;	*) ;;	esac	if [ ${subdir} = . ] ; then	    echo "#!/bin/sh# ${NO_EDIT}# This directory was configured as follows:${progname}" ${arguments}  "# ${using}" > ${subdir}/config.new	else	    echo "#!/bin/sh# ${NO_EDIT}# This directory was configured as follows:cd ${invsubdir}${progname}" ${arguments}  "# ${using}" > ${subdir}/config.new	fi	chmod a+x ${subdir}/config.new	if [ -r ${subdir}/config.back ] ; then		mv -f ${subdir}/config.back ${subdir}/config.status	fi	${moveifchange} ${subdir}/config.new ${subdir}/config.status	;;    *)	rm -f ${Makefile} ${subdir}/config.status ${links} ;;    esacdone# If there are subdirectories, then recur. if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then 	for configdir in ${configdirs} ; do		eval echo Configuring ${configdir}... ${redirect}		if [ -d ${srcdir}/${configdir} ] ; then			case "${srcdir}" in			".") ;;			*)				if [ ! -d ./${configdir} ] ; then					mkdir ./${configdir}				fi				;;			esac			POPDIR=${PWD=`pwd`}			cd ${configdir} ### figure out what to do with srcdir			case "${srcdir}" in			".") newsrcdir=${srcdir} ;; # no -srcdir option.  We're building in place.			/*) # absolute path				newsrcdir=${srcdir}/${configdir}				srcdiroption="-srcdir=${newsrcdir}"				;;			*) # otherwise relative				newsrcdir=../${srcdir}/${configdir}				srcdiroption="-srcdir=${newsrcdir}"				;;			esac### check for guested configure, otherwise fix possibly relative progname			if [ -f ${newsrcdir}/configure ] ; then				recprog=${newsrcdir}/configure			else				case "${progname}" in				/*)	recprog=${progname} ;;				*)	recprog=../${progname} ;;				esac			fi### The recursion line is here.			if eval ${recprog} ${verbose} ${host_alias} -target=${target_alias} \				${prefixoption} ${tmpdiroption} ${exec_prefixoption} \				${srcdiroption} ${program_prefixoption} ${program_suffixoption} ${program_transform_nameoption} ${site_option} ${removing} ${redirect} ; then				true			else				exit 1			fi			cd ${POPDIR}		else			eval echo Warning: source directory \"${srcdir}/${configdir}\" is missing. ${redirect}		fi	donefiexit 0## Local Variables:# fill-column: 131# End:## end of configure

⌨️ 快捷键说明

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