Skip to content

Commit 5dc8179

Browse files
committed
Fix Mac OS X 10.4 compatibility
1 parent 962b214 commit 5dc8179

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

interfaces-and-libraries.sh

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

153159
function 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" | m68k-apple-macos-as - -o "$obj") || (rm "$obj" && false) ) \
199-
&& m68k-apple-macos-ar cqs "$lib" "$obj" \
200-
&& echo "m68k-apple-macos/lib/$libname.o" >> "$FILE_LIST" \
201-
&& echo "m68k-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/m68k-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

Comments
 (0)