]> git.saurik.com Git - apple/libc.git/blobdiff - xcodescripts/build_linklists.sh
Libc-1353.60.8.tar.gz
[apple/libc.git] / xcodescripts / build_linklists.sh
index 097d6b713021ae7d82170fab863d38bdfa92b42c..59bf260ccde2064b7d455bdd761065e538e7b7f2 100755 (executable)
@@ -5,26 +5,38 @@
 
 # Skip script during installhdrs
 if [ "$ACTION" == installhdrs ]; then exit 0; fi
+# BUILD_ARCHIVES needs to be set in the project settings
+if [ -z "$BUILD_ARCHIVES" ]; then exit 0; fi
 
-ARCHIVES=(Platform Base FreeBSD FreeBSD_gcc NetBSD TRE vCancelable vDarwinExtsn vDarwinExtsnCancelable vPre1050 vLegacy vInode32)
+[ ! -d "$BUILT_PRODUCTS_DIR" ] && mkdir -p "$BUILT_PRODUCTS_DIR"
+[ ! -d "$DERIVED_FILES_DIR" ] && mkdir -p "$DERIVED_FILES_DIR"
 
 NORMAL_LIST="$BUILT_PRODUCTS_DIR/normal.linklist"
 DEBUG_LIST="$BUILT_PRODUCTS_DIR/debug.linklist"
 INTERPOSABLE_LIST="$DERIVED_FILES_DIR/interposable.list"
+UNEXPORT_LIST="$DERIVED_FILES_DIR/unexport.list"
 
-rm -f $NORMAL_LIST
-rm -f $DEBUG_LIST
-rm -f $INTERPOSABLE_LIST
+rm -f "$NORMAL_LIST"
+rm -f "$DEBUG_LIST"
+rm -f "$INTERPOSABLE_LIST"
+rm -f "$UNEXPORT_LIST"
 
-for x in ${ARCHIVES[@]}; do
+for x in ${BUILD_ARCHIVES[@]}; do
        nm -AUamgf "$BUILT_PRODUCTS_DIR/lib${x}.a" 2>/dev/null | \
                grep '__TEXT,__text' | \
-               grep -v '\[symbol resolver\]' | \
-               grep -vE '\$VARIANT\$(m|u)p' | \
-               awk '{ print $NF }' >> $INTERPOSABLE_LIST
+               grep -vE '\$VARIANT' | \
+               awk '{ print $NF }' >> "$INTERPOSABLE_LIST"
 
-       echo "-l$x" >> $NORMAL_LIST
-       echo "-l${x}_debug" >> $DEBUG_LIST
+       nm -AUamgf "$BUILT_PRODUCTS_DIR/lib${x}.a" 2>/dev/null | \
+               awk '/\$VARIANT/ { print $NF }' >> "$UNEXPORT_LIST"
+
+       echo "$BUILT_PRODUCTS_DIR/lib${x}.a" >> "$NORMAL_LIST.libtool"
+       filename=$(printf %s "$BUILT_PRODUCTS_DIR/lib${x}.a" | sed "s/\ /\\\ /g")
+       echo "$filename" >> "$NORMAL_LIST"
+
+       echo "$BUILT_PRODUCTS_DIR/lib${x}_debug.a" >> "$DEBUG_LIST.libtool"
+       filename=$(printf %s "$BUILT_PRODUCTS_DIR/lib${x}_debug.a" | sed "s/\ /\\\ /g")
+       echo "$filename" >> "$DEBUG_LIST"
 done
 
 touch "$BUILT_PRODUCTS_DIR/deps.c"