summaryrefslogtreecommitdiff
path: root/APACHE_1_3_42/src/helpers/slo.sh
diff options
context:
space:
mode:
Diffstat (limited to 'APACHE_1_3_42/src/helpers/slo.sh')
-rwxr-xr-xAPACHE_1_3_42/src/helpers/slo.sh189
1 files changed, 189 insertions, 0 deletions
diff --git a/APACHE_1_3_42/src/helpers/slo.sh b/APACHE_1_3_42/src/helpers/slo.sh
new file mode 100755
index 0000000000..df48bd29b6
--- /dev/null
+++ b/APACHE_1_3_42/src/helpers/slo.sh
@@ -0,0 +1,189 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+# slo.h -- (S)eparate (L)inker (O)ptions by library class
+# Initially written by Ralf S. Engelschall <rse apache.org>
+
+DIFS='
+'
+
+#
+# parse out -L and -l options from command line
+#
+DIRS=''
+LIBS=''
+ARGV=''
+optprev=""
+OIFS="$IFS" IFS="$DIFS"
+for opt
+do
+ # concatenate with previous option if exists
+ if [ "x$optprev" != "x" ]; then
+ opt="${optprev}${opt}";
+ optprev=''
+ fi
+ # remember options for arg when used stand-alone
+ if [ "x$opt" = "x-L" -o "x$opt" = "x-l" ]; then
+ optprev="$opt"
+ continue;
+ fi
+ # split argument into option plus option argument
+ arg="`echo $opt | cut -c3-`"
+ opt="`echo $opt | cut -c1-2`"
+ # store into containers
+ case $opt in
+ -L) DIRS="$DIRS:$arg" ;;
+ -l) LIBS="$LIBS:$arg" ;;
+ *) ARGV="$ARGV $opt" ;;
+ esac
+done
+IFS="$OIFS"
+
+#
+# set linker default directories
+#
+DIRS_DEFAULT='/lib:/usr/lib'
+if [ "x$LD_LIBRARY_PATH" != "x" ]; then
+ DIRS_DEFAULT="$DIRS_DEFAULT:$LD_LIBRARY_PATH"
+fi
+
+#
+# sort options by class
+#
+DIRS_OBJ=''
+LIBS_OBJ=''
+DIRS_PIC=''
+LIBS_PIC=''
+DIRS_DSO=''
+LIBS_DSO=''
+
+# for each library...
+OIFS="$IFS" IFS=':'
+for lib in $LIBS; do
+ [ "x$lib" = "x" ] && continue
+
+ found='no'
+ found_indefdir='no'
+ found_type=''
+ found_dir=''
+
+ # for each directory...
+ OIFS2="$IFS" IFS=":$DIFS"
+ for dir in ${DIRS} switch-to-defdirs ${DIRS_DEFAULT}; do
+ [ "x$dir" = "x" ] && continue
+ [ "x$dir" = "xswitch-to-defdirs" ] && found_indefdir=yes
+ [ ! -d $dir ] && continue
+
+ # search the file
+ OIFS3="$IFS" IFS="$DIFS"
+ for file in '' `cd $dir && ls lib${lib}.* 2>/dev/null`; do
+ [ "x$file" = "x" ] && continue
+ case $file in
+ *.so|*.so.[0-9]*|*.sl|*.sl.[0-9]* )
+ found=yes;
+ found_type=DSO;
+ break
+ ;;
+ *.lo|*.la )
+ found=yes;
+ found_type=PIC
+ ;;
+ *.a )
+ if [ "x$found_type" = "x" ]; then
+ found=yes
+ found_type=OBJ
+ fi
+ ;;
+ esac
+ done
+ IFS="$OIFS3"
+ if [ "x$found" = "xyes" ]; then
+ found_dir="$dir"
+ break
+ fi
+ done
+ IFS="$OIFS2"
+
+ if [ "x$found" = "xyes" ]; then
+ if [ "x$found_indefdir" != "xyes" ]; then
+ eval "dirlist=\"\${DIRS_${found_type}}:\""
+ if [ ".`echo \"$dirlist\" | fgrep :$found_dir:`" = . ]; then
+ eval "DIRS_${found_type}=\"\$DIRS_${found_type}:${found_dir}\""
+ fi
+ eval "LIBS_${found_type}=\"\$LIBS_${found_type}:$lib\""
+ else
+ eval "LIBS_${found_type}=\"\$LIBS_${found_type}:$lib\""
+ fi
+ else
+ LIBS_OBJ="$LIBS_OBJ:$lib"
+ #dirlist="`echo $DIRS $DIRS_DEFAULT | sed -e 's/:/ /g'`"
+ #echo "splitlibs:Warning: library \"$lib\" not found in any of the following dirs:" 2>&1
+ #echo "splitlibs:Warning: $dirlist" 1>&1
+ fi
+done
+IFS="$OIFS"
+
+#
+# also pass-through unused dirs even if it's useless
+#
+OIFS="$IFS" IFS=':'
+for dir in $DIRS; do
+ dirlist="${DIRS_OBJ}:${DIRS_PIC}:${DIRS_DSO}:"
+ if [ ".`echo \"$dirlist\" | fgrep :$dir:`" = . ]; then
+ DIRS_OBJ="$DIRS_OBJ:$dir"
+ fi
+done
+IFS="$OIFS"
+
+#
+# reassemble the options but seperated by type
+#
+OIFS="$IFS" IFS="$DIFS"
+for type in OBJ PIC DSO; do
+ OIFS2="$IFS" IFS=':'
+ eval "libs=\"\$LIBS_${type}\""
+ opts=''
+ for lib in $libs; do
+ [ "x$lib" = "x" ] && continue
+ opts="$opts -l$lib"
+ done
+ eval "LIBS_${type}=\"$opts\""
+
+ eval "dirs=\"\$DIRS_${type}\""
+ opts=''
+ for dir in $dirs; do
+ [ "x$dir" = "x" ] && continue
+ opts="$opts -L$dir"
+ done
+ eval "DIRS_${type}=\"$opts\""
+ IFS="$OIFS2"
+done
+IFS="$OIFS"
+
+#
+# give back results
+#
+OIFS="$IFS" IFS="$DIFS"
+for var in ARGV DIRS_OBJ LIBS_OBJ DIRS_PIC LIBS_PIC DIRS_DSO LIBS_DSO; do
+ eval "val=\"\$${var}\""
+ val="`echo $val | sed -e 's/^ *//'`"
+ echo "SLO_${var}=\"${val}\""
+done
+IFS="$OIFS"
+
+##EOF##