mach_install_mig.sh [plain text]
#!/bin/sh -x
cd $OBJROOT
if [ "${RC_ProjectName%_Sim}" != "${RC_ProjectName}" ] ; then
DSTROOT="${DSTROOT}${SDKROOT}"
fi
MIG=`xcrun -sdk "$SDKROOT" -find mig`
MIGCC=`xcrun -sdk "$SDKROOT" -find cc`
export MIGCC
MIG_DEFINES="-DLIBSYSCALL_INTERFACE"
MIG_HEADER_DST="$DSTROOT/usr/include/mach"
MIG_PRIVATE_HEADER_DST="$DSTROOT/usr/local/include/mach"
SERVER_HEADER_DST="$DSTROOT/usr/include/servers"
MACHINE_ARCH=`echo $ARCHS | cut -d' ' -f 1`
SRC="$SRCROOT/mach"
MIG_INTERNAL_HEADER_DST="$DERIVED_SOURCES_DIR/mach"
MIG_PRIVATE_DEFS_INCFLAGS="-I${SDKROOT}/System/Library/Frameworks/System.framework/PrivateHeaders"
MIGS="clock.defs
clock_priv.defs
clock_reply.defs
exc.defs
host_priv.defs
host_security.defs
lock_set.defs
mach_host.defs
mach_port.defs
processor.defs
processor_set.defs
vm_map.defs"
MIGS_PRIVATE=""
MIGS_DUAL_PUBLIC_PRIVATE=""
if [[ "$PLATFORM" = "iPhoneOS" || "$RC_ProjectName" = "Libsyscall_headers_Sim" ]]
then
MIGS_PRIVATE="mach_vm.defs"
else
MIGS+=" mach_vm.defs"
fi
MIGS_ARCH="thread_act.defs
task.defs"
MIGS_INTERNAL="mach_port.defs
mach_vm.defs
vm_map.defs"
SERVER_HDRS="key_defs.h
ls_defs.h
netname_defs.h
nm_defs.h"
mkdir -p $SERVER_HEADER_DST
for hdr in $SERVER_HDRS; do
install -o 0 -c -m 444 $SRC/servers/$hdr $SERVER_HEADER_DST
done
$MIG -arch $MACHINE_ARCH -header "$SERVER_HEADER_DST/netname.h" $SRC/servers/netname.defs
mkdir -p $MIG_HEADER_DST
for mig in $MIGS $MIGS_DUAL_PUBLIC_PRIVATE; do
MIG_NAME=`basename $mig .defs`
$MIG -arch $MACHINE_ARCH -cc $MIGCC -header "$MIG_HEADER_DST/$MIG_NAME.h" $MIG_DEFINES $SRC/$mig
done
mkdir -p $MIG_PRIVATE_HEADER_DST
for mig in $MIGS_PRIVATE $MIGS_DUAL_PUBLIC_PRIVATE; do
MIG_NAME=`basename $mig .defs`
$MIG -arch $MACHINE_ARCH -cc $MIGCC -header "$MIG_PRIVATE_HEADER_DST/$MIG_NAME.h" $MIG_DEFINES $MIG_PRIVATE_DEFS_INCFLAGS $SRC/$mig
if [ ! -e "$MIG_HEADER_DST/$MIG_NAME.h" ]; then
echo "#error $MIG_NAME.h unsupported." > "$MIG_HEADER_DST/$MIG_NAME.h"
fi
done
mkdir -p $MIG_INTERNAL_HEADER_DST
for mig in $MIGS_INTERNAL; do
MIG_NAME=`basename $mig .defs`
$MIG -arch $MACHINE_ARCH -cc $MIGCC -header "$MIG_INTERNAL_HEADER_DST/${MIG_NAME}_internal.h" $SRC/$mig
done
ARCHS=`echo $ARCHS | sed -e 's/armv./arm/g'`
for arch in $ARCHS; do
MIG_ARCH_DST="$MIG_HEADER_DST/$arch"
mkdir -p $MIG_ARCH_DST
for mig in $MIGS_ARCH; do
MIG_NAME=`basename $mig .defs`
$MIG -arch $MACHINE_ARCH -cc $MIGCC -header "$MIG_ARCH_DST/$MIG_NAME.h" $MIG_DEFINES $SRC/$mig
done
done