diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/mklib | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/bin/mklib b/bin/mklib index 0acaeb96eae..9799a4ed277 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}" |