summary refs log tree commit diff
path: root/pkgs/os-specific/darwin/apple-source-releases/IOKit/default.nix
blob: 4b82209f176cbb509ddbcf0ddd5a9d4b4e907b6c (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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
{ stdenv, appleDerivation, IOKitSrcs, xnu }:

# Someday it'll make sense to split these out into their own packages, but today is not that day.
appleDerivation {
  srcs = stdenv.lib.attrValues IOKitSrcs;
  sourceRoot = ".";

  phases = [ "unpackPhase" "installPhase" ];

  __propagatedImpureHostDeps = [
    "/System/Library/Frameworks/IOKit.framework/IOKit"
    "/System/Library/Frameworks/IOKit.framework/Resources"
    "/System/Library/Frameworks/IOKit.framework/Versions"
  ];

  installPhase = ''
    ###### IMPURITIES
    mkdir -p $out/Library/Frameworks/IOKit.framework
    pushd $out/Library/Frameworks/IOKit.framework
    ln -s /System/Library/Frameworks/IOKit.framework/IOKit
    ln -s /System/Library/Frameworks/IOKit.framework/Resources
    popd

    ###### HEADERS

    export dest=$out/Library/Frameworks/IOKit.framework/Headers
    mkdir -p $dest

    pushd $dest
    mkdir audio avc DV firewire graphics hid hidsystem i2c kext ndrvsupport
    mkdir network ps pwr_mgt sbp2 scsi serial storage stream usb video
    popd

    # root: complete
    cp IOKitUser-*/IOCFBundle.h                                       $dest
    cp IOKitUser-*/IOCFPlugIn.h                                       $dest
    cp IOKitUser-*/IOCFSerialize.h                                    $dest
    cp IOKitUser-*/IOCFUnserialize.h                                  $dest
    cp IOKitUser-*/IOCFURLAccess.h                                    $dest
    cp IOKitUser-*/IODataQueueClient.h                                $dest
    cp IOKitUser-*/IOKitLib.h                                         $dest
    cp IOKitUser-*/iokitmig.h                                         $dest
    cp ${xnu}/Library/PrivateFrameworks/IOKit.framework/Versions/A/Headers/*.h $dest

    # audio: complete
    cp IOAudioFamily-*/IOAudioDefines.h          $dest/audio
    cp IOKitUser-*/audio.subproj/IOAudioLib.h    $dest/audio
    cp IOAudioFamily-*/IOAudioTypes.h            $dest/audio

    # avc: complete
    cp IOFireWireAVC-*/IOFireWireAVC/IOFireWireAVCConsts.h $dest/avc
    cp IOFireWireAVC-*/IOFireWireAVCLib/IOFireWireAVCLib.h $dest/avc

    # DV: complete
    cp IOFWDVComponents-*/DVFamily.h $dest/DV

    # firewire: complete
    cp IOFireWireFamily-*/IOFireWireFamily.kmodproj/IOFireWireFamilyCommon.h $dest/firewire
    cp IOFireWireFamily-*/IOFireWireLib.CFPlugInProj/IOFireWireLib.h         $dest/firewire
    cp IOFireWireFamily-*/IOFireWireLib.CFPlugInProj/IOFireWireLibIsoch.h    $dest/firewire
    cp IOFireWireFamily-*/IOFireWireFamily.kmodproj/IOFWIsoch.h              $dest/firewire

    # graphics: missing AppleGraphicsDeviceControlUserCommand.h
    cp IOGraphics-*/IOGraphicsFamily/IOKit/graphics/IOAccelClientConnect.h     $dest/graphics
    cp IOGraphics-*/IOGraphicsFamily/IOKit/graphics/IOAccelSurfaceConnect.h    $dest/graphics
    cp IOGraphics-*/IOGraphicsFamily/IOKit/graphics/IOAccelTypes.h             $dest/graphics
    cp IOGraphics-*/IOGraphicsFamily/IOKit/graphics/IOFramebufferShared.h      $dest/graphics
    cp IOGraphics-*/IOGraphicsFamily/IOKit/graphics/IOGraphicsEngine.h         $dest/graphics
    cp IOGraphics-*/IOGraphicsFamily/IOKit/graphics/IOGraphicsInterface.h      $dest/graphics
    cp IOGraphics-*/IOGraphicsFamily/IOKit/graphics/IOGraphicsInterfaceTypes.h $dest/graphics
    cp IOKitUser-*/graphics.subproj/IOGraphicsLib.h                            $dest/graphics
    cp IOGraphics-*/IOGraphicsFamily/IOKit/graphics/IOGraphicsTypes.h          $dest/graphics

    # hid: complete
    cp IOKitUser-*/hid.subproj/IOHIDBase.h          $dest/hid
    cp IOKitUser-*/hid.subproj/IOHIDDevice.h        $dest/hid
    cp IOKitUser-*/hid.subproj/IOHIDDevicePlugIn.h  $dest/hid
    cp IOKitUser-*/hid.subproj/IOHIDElement.h       $dest/hid
    cp IOKitUser-*/hid.subproj/IOHIDLib.h           $dest/hid
    cp IOKitUser-*/hid.subproj/IOHIDManager.h       $dest/hid
    cp IOKitUser-*/hid.subproj/IOHIDQueue.h         $dest/hid
    cp IOKitUser-*/hid.subproj/IOHIDTransaction.h   $dest/hid
    cp IOKitUser-*/hid.subproj/IOHIDValue.h         $dest/hid
    cp IOHIDFamily-*/IOHIDFamily/IOHIDKeys.h        $dest/hid
    cp IOHIDFamily-*/IOHIDFamily/IOHIDUsageTables.h $dest/hid
    cp IOHIDFamily-*/IOHIDLib/IOHIDLibObsolete.h    $dest/hid

    # hidsystem: complete
    cp IOHIDFamily-*/IOHIDSystem/IOKit/hidsystem/ev_keymap.h      $dest/hidsystem
    cp IOKitUser-*/hidsystem.subproj/event_status_driver.h        $dest/hidsystem
    cp IOKitUser-*/hidsystem.subproj/IOHIDLib.h                   $dest/hidsystem
    cp IOHIDFamily-*/IOHIDSystem/IOKit/hidsystem/IOHIDParameter.h $dest/hidsystem
    cp IOHIDFamily-*/IOHIDSystem/IOKit/hidsystem/IOHIDShared.h    $dest/hidsystem
    cp IOHIDFamily-*/IOHIDSystem/IOKit/hidsystem/IOHIDTypes.h     $dest/hidsystem
    cp IOHIDFamily-*/IOHIDSystem/IOKit/hidsystem/IOLLEvent.h      $dest/hidsystem


    # i2c: complete
    cp IOGraphics-*/IOGraphicsFamily/IOKit/i2c/IOI2CInterface.h $dest/i2c

    # kext: complete
    cp IOKitUser-*/kext.subproj/KextManager.h $dest/kext

    # ndrvsupport: complete
    cp IOGraphics-*/IONDRVSupport/IOKit/ndrvsupport/IOMacOSTypes.h $dest/ndrvsupport
    cp IOGraphics-*/IONDRVSupport/IOKit/ndrvsupport/IOMacOSVideo.h $dest/ndrvsupport

    # network: complete
    cp IONetworkingFamily-*/IOEthernetController.h       $dest/network
    cp IONetworkingFamily-*/IOEthernetInterface.h        $dest/network
    cp IONetworkingFamily-*/IOEthernetStats.h            $dest/network
    cp IONetworkingFamily-*/IONetworkController.h        $dest/network
    cp IONetworkingFamily-*/IONetworkData.h              $dest/network
    cp IONetworkingFamily-*/IONetworkInterface.h         $dest/network
    cp IOKitUser-*/network.subproj/IONetworkLib.h        $dest/network
    cp IONetworkingFamily-*/IONetworkMedium.h            $dest/network
    cp IONetworkingFamily-*/IONetworkStack.h             $dest/network
    cp IONetworkingFamily-*/IONetworkStats.h             $dest/network
    cp IONetworkingFamily-*/IONetworkUserClient.h        $dest/network

    # ps: missing IOUPSPlugIn.h
    cp IOKitUser-*/ps.subproj/IOPowerSources.h $dest/ps
    cp IOKitUser-*/ps.subproj/IOPSKeys.h       $dest/ps

    # pwr_mgt: complete
    cp IOKitUser-*/pwr_mgt.subproj/IOPMKeys.h                                          $dest/pwr_mgt
    cp IOKitUser-*/pwr_mgt.subproj/IOPMLib.h                                           $dest/pwr_mgt
    cp ${xnu}/Library/PrivateFrameworks/IOKit.framework/Versions/A/Headers/pwr_mgt/*.h $dest/pwr_mgt
    cp IOKitUser-*/pwr_mgt.subproj/IOPMLibPrivate.h                                    $dest/pwr_mgt # Private

    # sbp2: complete
    cp IOFireWireSBP2-*/IOFireWireSBP2Lib/IOFireWireSBP2Lib.h $dest/sbp2

    # scsi: omitted for now

    # serial: complete
    cp IOSerialFamily-*/IOSerialFamily.kmodproj/IOSerialKeys.h $dest/serial
    cp IOSerialFamily-*/IOSerialFamily.kmodproj/ioss.h         $dest/serial

    # storage: complete
    # Needs ata subdirectory
    cp IOStorageFamily-*/IOAppleLabelScheme.h                                    $dest/storage
    cp IOStorageFamily-*/IOApplePartitionScheme.h                                $dest/storage
    cp IOBDStorageFamily-*/IOBDBlockStorageDevice.h                              $dest/storage
    cp IOBDStorageFamily-*/IOBDMedia.h                                           $dest/storage
    cp IOBDStorageFamily-*/IOBDMediaBSDClient.h                                  $dest/storage
    cp IOBDStorageFamily-*/IOBDTypes.h                                           $dest/storage
    cp IOStorageFamily-*/IOBlockStorageDevice.h                                  $dest/storage
    cp IOStorageFamily-*/IOBlockStorageDriver.h                                  $dest/storage
    cp IOCDStorageFamily-*/IOCDBlockStorageDevice.h                              $dest/storage
    cp IOCDStorageFamily-*/IOCDMedia.h                                           $dest/storage
    cp IOCDStorageFamily-*/IOCDMediaBSDClient.h                                  $dest/storage
    cp IOCDStorageFamily-*/IOCDPartitionScheme.h                                 $dest/storage
    cp IOCDStorageFamily-*/IOCDTypes.h                                           $dest/storage
    cp IODVDStorageFamily-*/IODVDBlockStorageDevice.h                            $dest/storage
    cp IODVDStorageFamily-*/IODVDMedia.h                                         $dest/storage
    cp IODVDStorageFamily-*/IODVDMediaBSDClient.h                                $dest/storage
    cp IODVDStorageFamily-*/IODVDTypes.h                                         $dest/storage
    cp IOStorageFamily-*/IOFDiskPartitionScheme.h                                $dest/storage
    cp IOStorageFamily-*/IOFilterScheme.h                                        $dest/storage
    cp IOFireWireSerialBusProtocolTransport-*/IOFireWireStorageCharacteristics.h $dest/storage
    cp IOStorageFamily-*/IOGUIDPartitionScheme.h                                 $dest/storage
    cp IOStorageFamily-*/IOMedia.h                                               $dest/storage
    cp IOStorageFamily-*/IOMediaBSDClient.h                                      $dest/storage
    cp IOStorageFamily-*/IOPartitionScheme.h                                     $dest/storage
    cp IOStorageFamily-*/IOStorage.h                                             $dest/storage
    cp IOStorageFamily-*/IOStorageCardCharacteristics.h                          $dest/storage
    cp IOStorageFamily-*/IOStorageDeviceCharacteristics.h                        $dest/storage
    cp IOStorageFamily-*/IOStorageProtocolCharacteristics.h                      $dest/storage

    # stream: missing altogether

    # usb: complete
    cp IOUSBFamily-630.4.5/IOUSBFamily/Headers/IOUSBLib.h            $dest/usb
    cp IOUSBFamily-630.4.5/IOUSBUserClient/Headers/IOUSBUserClient.h $dest/usb
    cp IOUSBFamily-560.4.2/IOUSBFamily/Headers/USB.h                 $dest/usb # This file is empty in 630.4.5!
    cp IOUSBFamily-630.4.5/IOUSBFamily/Headers/USBSpec.h             $dest/usb

    # video: missing altogether
  '';

  meta = with stdenv.lib; {
    maintainers = with maintainers; [ joelteon copumpkin ];
    platforms   = platforms.darwin;
    license     = licenses.apsl20;
  };
}