[Prev][Next][Index][Thread]

proposal for adding 'oskit-config' script



Hello,

I propose adding a 'oskit-config' script like the Gnome people have added
to there project. This script returns for example the library path. I ask
you to add this because I always strungle with the LD_LIBRARY_PATH. With
this script the users could have the options, how they find the libraries. 

The added patches are just a quick and dirty test but it works :)


thanks in advanced
wagi

-- 
Daniel Wagner
email: wagi@gmx.ch

GnuPG: 1024D/DCDE890A (public key available on any keyserver)
--- hurd/oskit-20000505/GNUmakerules	Fri Mar 10 10:37:01 2000
+++ oskit-20000505/GNUmakerules	Sun Jul 30 19:12:03 2000
@@ -173,7 +173,8 @@
 	$(INSTALL) $< $@
 
 # Always fully build everything before trying to install anything
-install: all
+install: all 
+	$(INSTALL) ${OBJDIR}/oskit-config ${prefix}/bin
 
 
 # Get rid of a bunch of nasty built-in implicit rules,
--- hurd/oskit-20000505/configure.in	Sun Jul 30 19:18:26 2000
+++ oskit-20000505/configure.in	Sun Jul 30 16:50:41 2000
@@ -595,4 +595,10 @@
 done
 
 
+dnl These definitions are expanded in oskit-config
+OSKIT_LIBDIR='-L${libdir}'
+OSKIT_INCLUDEDIR='-I${includedir}'
+
+outfiles="oskit-config"
+
 AC_OUTPUT($outfiles)
#!/bin/sh

prefix=@prefix@
exec_prefix=@exec_prefix@

bindir=@bindir@
sbindir=@sbindir@
libexecdir=@libexecdir@
datadir=@datadir@
sysconfdir=@sysconfdir@
sharedstatedir=@sharedstatedir@
localstatedir=@localstatedir@
libdir=@libdir@
infodir=@infodir@
mandir=@mandir@
includedir=@includedir@

pkgdatadir=${datadir}/@PACKAGE@
pkglibdir=${libdir}/@PACKAGE@
pkgincludedir=${includedir}/@PACKAGE@
MODULE_VERSION=@PACKAGE@-@VERSION@
module_dirs="$libdir"

# stolen from autoconf
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
    ac_n= ac_c='
' ac_t='	'
  else
    ac_n=-n ac_c= ac_t=
  fi
else
  ac_n= ac_c='\c' ac_t=
fi

for extra in `echo $OSKIT_PATH  | sed 's/:/ /g'`; do
    module_dirs="$extra/lib:$module_dirs"
done
for extra in `echo $OSKIT_LIBCONFIG_PATH  | sed 's/:/ /g'`; do
    module_dirs="$extra:$module_dirs"
done

usage()
{
    exit_code=$1

    cat <<EOF
Usage: oskit-config [OPTION]... [LIBRARY]...

Generic options
  --version	output oskit version information.
  --modversion  output the module version information.
  --help	display this help and exit.

Compilation support options
  --cflags	print pre-processor and compiler flags
  --libs	print library linking information
  --libs-only-L	only print the -L/-R part of --libs
  --libs-only-l only print the -l part of --libs

Install directories oskit-libs was configured to
  --prefix  --exec-prefix  --bindir  --sbindir  --libexecdir  --datadir
  --sysconfdir  --sharedstatedir  --localstatedir  --libdir  --infodir
  --mandir  --includedir

EOF

    for dir in `echo $module_dirs | sed 's/:/ /g'`; do
	conf_shs=`cd $dir; echo *Conf.sh`
	if test "x$conf_shs" = x || test "x$conf_shs" = 'x*Conf.sh'; then :
	else
	    set oskitConf.sh $conf_shs

	    for i
	    do
		case "$i" in
		oskitConf.sh) ;;
		*Conf.sh) echo $ac_n "$i $ac_c";;
		*) echo "*** ERROR: What is this? $i" 1>&2; exit 2 ;;
		esac
	    done
	fi
    done | sed -e 's/Conf\.sh /, /g' -e 's/, $//' | fmt

    exit $exit_code
}

if test $# -eq 0; then
    usage 1
fi

cflags=false
libs_L=false
libs_l=false
modversion=false

while test $# -gt 0; do
    case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
    esac

    case $1 in
    --version)
	echo @PACKAGE@ @VERSION@
	exit 0
	;;
    --exec-prefix)
	echo $exec_prefix
	exit 0
	;;
    --prefix)
	echo $prefix
	exit 0
	;;
    --*dir)
	dirname=\$`echo $1 | sed -e 's,^--,,'`
	dirname=`eval echo $dirname`
	test -z "$dirname" && exit 1
	echo $dirname
	exit 0
	;;
    --help)
	usage 0
	;;
    --cflags)
       	cflags=true
       	;;
    --libs)
       	libs_L=true
	libs_l=true
       	;;
    --libs-only-L)
	libs_L=true
	;;
    --libs-only-l)
	libs_l=true
	;;
    --modversion)
        modversion=true
	;;
    --*)
	usage 1
	;;
    oskit)
       	the_libs="$the_libs @OSKIT_LIBDIR@ @OSKIT_LIBS@"
  	the_flags="$the_flags @OSKIT_INCLUDEDIR@ @OSKIT_CFLAGS@"
	;;
    *)
        error=true
        for dir in `echo $module_dirs | sed 's/:/ /g'`; do
   	    cnf_sh=${dir}/${1}Conf.sh
	    if test -f ${cnf_sh}; then
    		. ${cnf_sh}
    		up_name=`echo $1 | tr [a-z] [A-Z]`
    		cnf_libdir=\$${up_name}_LIBDIR
    		cnf_libs=\$${up_name}_LIBS
    		cnf_flags=\$${up_name}_INCLUDEDIR
    		the_libs="$the_libs `eval echo $cnf_libdir` `eval echo $cnf_libs`"
    		the_flags="$the_flags `eval echo $cnf_flags`"
		error=false
		break
    	    fi
        done
	if $error; then
	    echo Unknown library \`$1\' 1>&2
	fi
	;;
    esac
    shift
done

if $cflags; then
    all_flags="$the_flags"
fi

if $libs_L || $libs_l; then
    all_flags="$all_flags $the_libs"
fi

if $modversion; then
    echo $MODULE_VERSION
    exit 0
fi

if test -z "$all_flags" || test "x$all_flags" = "x "; then
    exit 1
fi

# Straight out any possible duplicates, but be careful to
# get `-lfoo -lbar -lbaz' for `-lfoo -lbaz -lbar -lbaz'
other_flags=
lib_L_flags=
rev_libs=
for i in $all_flags; do
    case "$i" in
    # a library, save it for later, in reverse order
    -l*) rev_libs="$i $rev_libs" ;;
    -L*|-R*)
	if $libs_L; then
	    case " $lib_L_flags " in
	    *\ $i\ *) ;;			# already there
	    *) lib_L_flags="$lib_L_flags $i" ;;	# add it to output
	    esac 
	fi;;
    *)
	case " $other_flags " in
	*\ $i\ *) ;;				# already there
	*) other_flags="$other_flags $i" ;;	# add it to output
        esac ;;
    esac
done

ord_libs=
if $libs_l; then
    for i in $rev_libs; do
	case " $ord_libs " in
	*\ $i\ *) ;;			# already there
	*) ord_libs="$i $ord_libs" ;;	# add it to output in reverse order
	esac
    done
fi

echo $other_flags $lib_L_flags $ord_libs

exit 0

Follow-Ups: