summaryrefslogtreecommitdiff
path: root/bin/mklib
diff options
context:
space:
mode:
Diffstat (limited to 'bin/mklib')
-rwxr-xr-xbin/mklib22
1 files changed, 17 insertions, 5 deletions
diff --git a/bin/mklib b/bin/mklib
index 0acaeb96ea..9799a4ed27 100755
--- a/bin/mklib
+++ b/bin/mklib
@@ -28,15 +28,26 @@
# Given a list of files, look for .a archives and unpack them.
# Return the original list of files minus the .a files plus the unpacked files.
expand_archives() {
+ DIR=$1
+ shift
FILES=$@
NEWFILES=""
+ ORIG_DIR=`pwd`
+ mkdir -p "$DIR"
+ cd "$DIR"
for FILE in $FILES ; do
case $FILE in
*.a)
# extract the .o files from this .a archive
+ case $FILE in
+ /*) ;;
+ *) FILE="$ORIG_DIR/$FILE" ;;
+ esac
MEMBERS=`ar t $FILE`
ar x $FILE
- NEWFILES="$NEWFILES $MEMBERS"
+ for MEMBER in $MEMBERS ; do
+ NEWFILES="$NEWFILES $DIR/$MEMBER"
+ done
;;
*)
# other file type, just add to list
@@ -44,6 +55,7 @@ expand_archives() {
;;
esac
done
+ cd "$ORIG_DIR"
echo $NEWFILES
}
@@ -360,13 +372,13 @@ case $ARCH in
fi
# expand .a into .o files
- NEW_OBJECTS=`expand_archives $OBJECTS`
+ NEW_OBJECTS=`expand_archives ${LIBNAME}.obj $OBJECTS`
# make static lib
FINAL_LIBS=`make_ar_static_lib ${OPTS} 1 ${LIBNAME} ${NEW_OBJECTS}`
# remove temporary extracted .o files
- rm -f `contents_of_archives $OBJECTS`
+ rm -rf ${LIBNAME}.obj
else
# make dynamic library
LIBNAME="lib${LIBNAME}" # prefix with "lib"
@@ -553,12 +565,12 @@ case $ARCH in
echo "mklib: Making FreeBSD static library: " ${STLIB}
# expand .a into .o files
- NEW_OBJECTS=`expand_archives $OBJECTS`
+ NEW_OBJECTS=`expand_archives ${STLIB}.obj $OBJECTS`
FINAL_LIBS=`make_ar_static_lib cq 1 ${STLIB} ${NEW_OBJECTS}`
# remove temporary extracted .o files
- rm -f `contents_of_archives $OBJECTS`
+ rm -rf ${STLIB}.obj
else
# make dynamic library
SHLIB="lib${LIBNAME}.so.${MAJOR}"