blob: 8276d2f4b4257382900c3489bf7078b1f8440cde (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
{ stdenv, appleDerivation, fetchzip, bootstrap_cmds, bison, flex, gnum4, unifdef, perl }:
appleDerivation {
phases = [ "unpackPhase" "patchPhase" "installPhase" ];
buildInputs = [ bootstrap_cmds bison flex gnum4 unifdef perl ];
patchPhase = ''
substituteInPlace Makefile \
--replace "/bin/" "" \
--replace "MAKEJOBS := " '# MAKEJOBS := '
substituteInPlace makedefs/MakeInc.cmd \
--replace "/usr/bin/" "" \
--replace "/bin/" "" \
--replace "-Werror " ""
substituteInPlace makedefs/MakeInc.def \
--replace "-c -S -m" "-c -m"
substituteInPlace makedefs/MakeInc.top \
--replace "MEMORY_SIZE := " 'MEMORY_SIZE := 1073741824 # '
substituteInPlace libkern/kxld/Makefile \
--replace "-Werror " ""
substituteInPlace SETUP/kextsymboltool/Makefile \
--replace "-lstdc++" "-lc++"
substituteInPlace libsyscall/xcodescripts/mach_install_mig.sh \
--replace "/usr/include" "/include" \
--replace "/usr/local/include" "/include" \
--replace "MIG=" "# " \
--replace "MIGCC=" "# " \
--replace " -o 0" "" \
--replace '$SRC/$mig' '-I$DSTROOT/include $SRC/$mig' \
--replace '$SRC/servers/netname.defs' '-I$DSTROOT/include $SRC/servers/netname.defs'
patchShebangs .
'';
installPhase = ''
# This is a bit of a hack...
mkdir -p sdk/usr/local/libexec
cat > sdk/usr/local/libexec/availability.pl <<EOF
#!$SHELL
if [ "\$1" == "--macosx" ]; then
echo 10.0 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9
elif [ "\$1" == "--ios" ]; then
echo 2.0 2.1 2.2 3.0 3.1 3.2 4.0 4.1 4.2 4.3 5.0 5.1 6.0 6.1 7.0
fi
EOF
chmod +x sdk/usr/local/libexec/availability.pl
export SDKROOT_RESOLVED=$PWD/sdk
export HOST_SDKROOT_RESOLVED=$PWD/sdk
export PLATFORM=MacOSX
export SDKVERSION=10.7
export CC=cc
export CXX=c++
export MIG=${bootstrap_cmds}/bin/mig
export MIGCOM=${bootstrap_cmds}/libexec/migcom
export STRIP=sentinel-missing
export LIPO=sentinel-missing
export LIBTOOL=sentinel-missing
export NM=sentinel-missing
export UNIFDEF=${unifdef}/bin/unifdef
export DSYMUTIL=sentinel-missing
export CTFCONVERT=sentinel-missing
export CTFMERGE=sentinel-missing
export CTFINSERT=sentinel-missing
export NMEDIT=sentinel-missing
export HOST_OS_VERSION=10.7
export HOST_CC=cc
export HOST_FLEX=${flex}/bin/flex
export HOST_BISON=${bison}/bin/bison
export HOST_GM4=${gnum4}/bin/m4
export HOST_CODESIGN='echo dummy_codesign'
export HOST_CODESIGN_ALLOCATE=echo
export DSTROOT=$out
make installhdrs
mv $out/usr/include $out
rmdir $out/usr
# TODO: figure out why I need to do this
cp libsyscall/wrappers/*.h $out/include
mkdir -p $out/include/os
cp libsyscall/os/tsd.h $out/include/os/tsd.h
cp EXTERNAL_HEADERS/AssertMacros.h $out/include
# Build the mach headers we crave
export MIGCC=cc
export ARCHS="x86_64"
export SRCROOT=$PWD/libsyscall
export DERIVED_SOURCES_DIR=$out/include
export SDKROOT=$out
libsyscall/xcodescripts/mach_install_mig.sh
# Get rid of the System prefix
mv $out/System/* $out/
# Add some symlinks
ln -s $out/Library/Frameworks/System.framework/Versions/B \
$out/Library/Frameworks/System.framework/Versions/Current
ln -s $out/Library/Frameworks/System.framework/Versions/Current/PrivateHeaders \
$out/Library/Frameworks/System.framework/Headers
# IOKit (and possibly the others) is incomplete, so let's not make it visible from here...
mkdir $out/Library/PrivateFrameworks
mv $out/Library/Frameworks/IOKit.framework $out/Library/PrivateFrameworks
'';
}
|