@@ -137,17 +137,23 @@ function locateAndCheckInterfacesAndLibraries()
137137
138138# remove old symlinks in $PREFIX/*-apple-macos/include/
139139# and link files from $PREFIX/CIncludes
140- function linkheaders ()
140+ function linkHeaders ()
141141{
142142 # incompatible with Universal Interfaces on case-insensitive file systems
143- # (and does not currently work anyways)
144- rm -f " $1 " /threads.h
145-
146- # the following command doesn't work on older Mac OS X versions.
147- # allow it to fail quietly, at worst we leave some dangling symlinks around
148- # in the rare situation that headers are removed from the input directory
149- find " $1 " -lname " ../../CIncludes/*" -delete || true
150- (cd " $1 " && find " ../../CIncludes/" -name ' *.h' -exec ln -s {} . \; )
143+ rm -f " $1 " /threads.h # does not currently work anyways
144+ rm -f " $1 " /memory.h # non-standard aliasof string.h
145+ rm -f " $1 " /strings.h # traditional bsd string functions
146+
147+ (cd " $1 " && find " ../../CIncludes" -name ' *.h' -exec ln -s {} . \; )
148+ }
149+
150+ function unlinkHeaders()
151+ {
152+ for file in " $1 /" * ; do
153+ if [[ ` readlink " $file " ` == ../../CIncludes/* ]]; then
154+ rm " $file "
155+ fi
156+ done
151157}
152158
153159function setupPEFBinaryFormat()
@@ -171,12 +177,12 @@ function setUpInterfacesAndLibraries()
171177
172178 if [ $BUILD_68K != false ]; then
173179 ln -sf ../RIncludes $PREFIX /m68k-apple-macos/RIncludes
174- linkheaders $PREFIX /m68k-apple-macos/include
180+ linkHeaders $PREFIX /m68k-apple-macos/include
175181 fi
176182
177183 if [ $BUILD_PPC != false ]; then
178184 ln -sf ../RIncludes $PREFIX /powerpc-apple-macos/RIncludes
179- linkheaders $PREFIX /powerpc-apple-macos/include
185+ linkHeaders $PREFIX /powerpc-apple-macos/include
180186 fi
181187
182188 FILE_LIST=" $PREFIX /apple-libraries.txt"
@@ -190,15 +196,19 @@ function setUpInterfacesAndLibraries()
190196 libname=` basename " $macobj " `
191197 libname=${libname% .o}
192198 printf " %30s => %-30s\n" ${libname} .o lib${libname} .a
199+ asm=" $PREFIX /m68k-apple-macos/lib/$libname .s"
193200 obj=" $PREFIX /m68k-apple-macos/lib/$libname .o"
194201 lib=" $PREFIX /m68k-apple-macos/lib/lib${libname} .a"
202+
195203 rm -f $lib
196204
197- set -o pipefail
198- (( ConvertObj "$macobj " | m68 k- apple- macos- as - - o "$obj ") || (rm "$obj " && false) ) \
199- && m68 k-apple-macos-ar cqs "$lib " "$obj " \
200- && echo "m68 k-apple-macos/lib/$libname .o" >> "$FILE_LIST " \
201- && echo "m68 k-apple-macos/lib/lib${libname} .a" >> "$FILE_LIST "
205+ if ConvertObj " $macobj " > " $asm " ; then
206+ m68k-apple-macos-as " $asm " -o " $obj "
207+ m68k-apple-macos-ar cqs " $lib " " $obj "
208+ echo " m68k-apple-macos/lib/$libname .o" >> " $FILE_LIST "
209+ echo " m68k-apple-macos/lib/lib${libname} .a" >> " $FILE_LIST "
210+ fi
211+ rm -f " $asm "
202212 fi
203213 done
204214 fi
@@ -250,8 +260,8 @@ function removeInterfacesAndLibraries()
250260 for file in ` cat " $FILE_LIST " ` ; do
251261 rm " $PREFIX /$file "
252262 done
253- find "$PREFIX /m68 k-apple-macos/include" -lname "../../CIncludes/*" -delete || true
254- find "$PREFIX /powerpc-apple-macos/include" -lname "../../CIncludes/*" -delete || true
263+ unlinkHeaders " $PREFIX /m68k-apple-macos/include"
264+ unlinkHeaders " $PREFIX /powerpc-apple-macos/include"
255265 rm " $PREFIX /m68k-apple-macos/RIncludes"
256266 rm " $PREFIX /powerpc-apple-macos/RIncludes"
257267 rm -rf " $PREFIX /CIncludes"
@@ -261,7 +271,10 @@ function removeInterfacesAndLibraries()
261271 fi
262272}
263273
264- if [ "$0 " = "$BASH_SOURCE " ]; then
274+ if (return 0 2> /dev/null); then
275+ # We are being sourced from build-toolchain.sh
276+ true
277+ else
265278 # We are being run directly
266279
267280 if [ $# -lt 2 ]; then
0 commit comments