-#!/bin/sh -x
+#!/bin/sh -xe
#
# Copyright (c) 2010 Apple Inc. All rights reserved.
#
# build inside OBJROOT
cd $OBJROOT
-# check if we're building for the simulator
-if [ "$PLATFORM_NAME" = "iphonesimulator" ] ; 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"
-MACH_HEADER_DST="$DSTROOT/usr/include/mach"
+MIG_HEADER_OBJ="$OBJROOT/mig_hdr/include/mach"
+MIG_HEADER_DST="$BUILT_PRODUCTS_DIR/mig_hdr/include/mach"
+MIG_PRIVATE_HEADER_DST="$BUILT_PRODUCTS_DIR/mig_hdr/local/include/mach"
+SERVER_HEADER_DST="$BUILT_PRODUCTS_DIR/mig_hdr/include/servers"
+MACH_HEADER_DST="$BUILT_PRODUCTS_DIR/mig_hdr/include/mach"
# from old Libsystem makefiles
MACHINE_ARCH=`echo $ARCHS | cut -d' ' -f 1`
-if [[ ( "$MACHINE_ARCH" = "x86_64" ) && `echo $ARCHS | wc -w` -gt 1 ]]
+if [[ ( "$MACHINE_ARCH" = "arm64" || "$MACHINE_ARCH" = "x86_64" || "$MACHINE_ARCH" = "x86_64h" ) && `echo $ARCHS | wc -w` -gt 1 ]]
then
# MACHINE_ARCH needs to be a 32-bit arch to generate vm_map_internal.h correctly.
MACHINE_ARCH=`echo $ARCHS | cut -d' ' -f 2`
+ if [[ ( "$MACHINE_ARCH" = "arm64" || "$MACHINE_ARCH" = "x86_64" || "$MACHINE_ARCH" = "x86_64h" ) && `echo $ARCHS | wc -w` -gt 1 ]]
+ then
+ # MACHINE_ARCH needs to be a 32-bit arch to generate vm_map_internal.h correctly.
+ MACHINE_ARCH=`echo $ARCHS | cut -d' ' -f 3`
+ fi
fi
SRC="$SRCROOT/mach"
-MIG_INTERNAL_HEADER_DST="$DERIVED_SOURCES_DIR/mach"
+MIG_INTERNAL_HEADER_DST="$BUILT_PRODUCTS_DIR/internal_hdr/include/mach"
MIG_PRIVATE_DEFS_INCFLAGS="-I${SDKROOT}/System/Library/Frameworks/System.framework/PrivateHeaders"
+FILTER_MIG="$SRCROOT/xcodescripts/filter_mig.awk"
MIGS="clock.defs
clock_priv.defs
lock_set.defs
mach_host.defs
mach_port.defs
+ mach_voucher.defs
processor.defs
processor_set.defs
task.defs
MIGS_DUAL_PUBLIC_PRIVATE=""
-if [[ "$PLATFORM_NAME" = "iphoneos" || "$PLATFORM_NAME" = "iphonesimulator" ]]
+if ( echo {iphone,tv,appletv,watch}{os,simulator} iphone{osnano,nanosimulator} | grep -wFq "$PLATFORM_NAME" )
then
MIGS_PRIVATE="mach_vm.defs"
else
MIGS_INTERNAL="mach_port.defs
mach_vm.defs
+ thread_act.defs
vm_map.defs"
SERVER_HDRS="key_defs.h
mach_interface.h
port_obj.h
sync.h
- vm_task.h"
+ vm_task.h
+ vm_page_size.h
+ thread_state.h"
+
+MIG_FILTERS="watchos_prohibited_mig.txt tvos_prohibited_mig.txt"
# install /usr/include/server headers
mkdir -p $SERVER_HEADER_DST
done
# special case because we only have one to do here
-$MIG -arch $MACHINE_ARCH -header "$SERVER_HEADER_DST/netname.h" $SRC/servers/netname.defs
+$MIG -novouchers -arch $MACHINE_ARCH -header "$SERVER_HEADER_DST/netname.h" $SRC/servers/netname.defs
# install /usr/include/mach mig headers
mkdir -p $MIG_HEADER_DST
+mkdir -p $MIG_HEADER_OBJ
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
+ $MIG -novouchers -arch $MACHINE_ARCH -cc $MIGCC -header "$MIG_HEADER_OBJ/$MIG_NAME.h" $MIG_DEFINES $SRC/$mig
+ for filter in $MIG_FILTERS; do
+ $FILTER_MIG $SRC/$filter $MIG_HEADER_OBJ/$MIG_NAME.h > $MIG_HEADER_OBJ/$MIG_NAME.tmp.h
+ mv $MIG_HEADER_OBJ/$MIG_NAME.tmp.h $MIG_HEADER_OBJ/$MIG_NAME.h
+ done
+ install -o 0 -c -m 444 $MIG_HEADER_OBJ/$MIG_NAME.h $MIG_HEADER_DST/$MIG_NAME.h
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
+ $MIG -novouchers -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
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
+ $MIG -novouchers -arch $MACHINE_ARCH -cc $MIGCC -header "$MIG_INTERNAL_HEADER_DST/${MIG_NAME}_internal.h" $SRC/$mig
done