Skip to content

Commit a7a61bc

Browse files
committed
Merge branch 'packaging' into develop
2 parents 13999bd + db63288 commit a7a61bc

File tree

1,251 files changed

+11516
-7243
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,251 files changed

+11516
-7243
lines changed

.apianalyzer/clangargs.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-target i686-pc-windows-msvc -fblocks -ferror-limit=0 -fobjc-runtime=objfw -x objective-c++ -std=c++14 -DEIGEN_MPL2_ONLY -include WOCStdlib.h -include StubIncludes.h
2+
-isystem "$(BASE_SEARCH_PATH)\\tools\\msvc\\LLVM-3.6.0\\lib\\clang\\3.7.0\\include"
3+
-isystem "$(BASE_SEARCH_PATH)\\tools\\include\\WOCStdLib"
4+
-isystem "$(BASE_SEARCH_PATH)\\tools\\include_next\\WOCStdLib"
5+
-isystem "$(BASE_SEARCH_PATH)\\tools\\include"
6+
-isystem "$(BASE_SEARCH_PATH)\\tools\\deps\\prebuilt\\include"
7+
-isystem "$(BASE_SEARCH_PATH)\\include"
8+
-isystem "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\include"
9+
-isystem "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\atlmfc\\include"
10+
-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.14393.0\\ucrt"
11+
-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.14393.0\\um"
12+
-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.14393.0\\shared"
13+
-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.14393.0\\winrt"

.apianalyzer/header_frameworks.txt

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# List of WinObjC framework header directories to parse
2+
# paths are relative to $(BASE_SEARCH_PATH) set by --sdkpath
3+
#######################################################
4+
{frameworkEntries: [
5+
{name: "Accelerate", path: "include\\Accelerate", annotation: {status: "External", type: "Default"}},
6+
{name: "Accounts", path: "include\\Accounts"},
7+
{name: "AddressBook", path: "include\\AddressBook"},
8+
{name: "AddressBookUI", path: "include\\AddressBookUI"},
9+
{name: "AdSupport", path: "include\\AdSupport"},
10+
{name: "AssetsLibrary", path: "include\\AssetsLibrary"},
11+
{name: "AudioToolbox", path: "include\\AudioToolbox"},
12+
{name: "AudioUnit", path: "include\\AudioUnit"},
13+
{name: "AVFoundation", path: "include\\AVFoundation"},
14+
{name: "AVKit", path: "include\\AVKit"},
15+
{name: "CFNetwork", path: "include\\CFNetwork"},
16+
{name: "CloudKit", path: "include\\CloudKit"},
17+
{name: "CommonCrypto", path: "include\\CommonCrypto"},
18+
{name: "Contacts", path: "include\\Contacts"},
19+
{name: "ContactsUI", path: "include\\ContactsUI"},
20+
{name: "CoreAudio", path: "include\\CoreAudio"},
21+
{name: "CoreAudioKit", path: "include\\CoreAudioKit"},
22+
{name: "CoreBluetooth", path: "include\\CoreBluetooth"},
23+
{name: "CoreData", path: "include\\CoreData"},
24+
{name: "CoreFoundation", path: "include\\CoreFoundation", annotation: {status: "External", type: "Default"}},
25+
{name: "CoreGraphics", path: "include\\CoreGraphics"},
26+
{name: "CoreImage", path: "include\\CoreImage"},
27+
{name: "CoreLocation", path: "include\\CoreLocation"},
28+
{name: "CoreMedia", path: "include\\CoreMedia"},
29+
{name: "CoreMIDI", path: "include\\CoreMIDI"},
30+
{name: "CoreMotion", path: "include\\CoreMotion"},
31+
{name: "CoreSpotlight", path: "include\\CoreSpotlight"},
32+
{name: "CoreTelephony", path: "include\\CoreTelephony"},
33+
{name: "CoreText", path: "include\\CoreText"},
34+
{name: "CoreVideo", path: "include\\CoreVideo"},
35+
{name: "EventKit", path: "include\\EventKit"},
36+
{name: "EventKitUI", path: "include\\EventKitUI"},
37+
{name: "ExternalAccessory", path: "include\\ExternalAccessory"},
38+
{name: "Foundation", path: "include\\Foundation"},
39+
{name: "GameController", path: "include\\GameController"},
40+
{name: "GameKit", path: "include\\GameKit"},
41+
{name: "GameplayKit", path: "include\\GameplayKit"},
42+
{name: "GLKit", path: "include\\GLKit"},
43+
{name: "HealthKit", path: "include\\HealthKit"},
44+
{name: "HomeKit", path: "include\\HomeKit"},
45+
{name: "iAd", path: "include\\iAd"},
46+
{name: "ImageIO", path: "include\\ImageIO"},
47+
{name: "LocalAuthentication", path: "include\\LocalAuthentication"},
48+
{name: "MapKit", path: "include\\MapKit"},
49+
{name: "MediaAccessibility", path: "include\\MediaAccessibility"},
50+
{name: "MediaPlayer", path: "include\\MediaPlayer"},
51+
{name: "MessageUI", path: "include\\MessageUI"},
52+
{name: "Metal", path: "include\\Metal"},
53+
{name: "MetalKit", path: "include\\MetalKit"},
54+
{name: "MetalPerformanceShaders", path: "include\\MetalPerformanceShaders"},
55+
{name: "MobileCoreServices", path: "include\\MobileCoreServices"},
56+
{name: "ModelIO", path: "include\\ModelIO"},
57+
{name: "MultipeerConnectivity", path: "include\\MultipeerConnectivity"},
58+
{name: "NetworkExtension", path: "include\\NetworkExtension"},
59+
{name: "NewsstandKit", path: "include\\NewsstandKit"},
60+
{name: "NotificationCenter", path: "include\\NotificationCenter"},
61+
{name: "OpenAL", path: "deps\\prebuilt\\include\\OpenAL", annotation: {status: "External", type: "Override"}},
62+
{name: "OpenGLES", path: "include\\OpenGLES"},
63+
{name: "PassKit", path: "include\\PassKit"},
64+
{name: "Photos", path: "include\\Photos"},
65+
{name: "PhotosUI", path: "include\\PhotosUI"},
66+
{name: "PushKit", path: "include\\PushKit"},
67+
{name: "QuartzCore", path: "include\\QuartzCore"},
68+
{name: "QuickLook", path: "include\\QuickLook"},
69+
{name: "ReplayKit", path: "include\\ReplayKit"},
70+
{name: "SafariServices", path: "include\\SafariServices"},
71+
{name: "SceneKit", path: "include\\SceneKit"},
72+
{name: "Security", path: "include\\Security"},
73+
{name: "Social", path: "include\\Social"},
74+
{name: "SpriteKit", path: "include\\SpriteKit"},
75+
{name: "StoreKit", path: "include\\StoreKit"},
76+
{name: "SystemConfiguration", path: "include\\SystemConfiguration"},
77+
{name: "Twitter", path: "include\\Twitter"},
78+
{name: "UIKit", path: "include\\UIKit"},
79+
{name: "WatchConnectivity", path: "include\\WatchConnectivity"},
80+
{name: "WatchKit", path: "include\\WatchKit"},
81+
{name: "WebKit", path: "include\\WebKit"}
82+
]}

.apianalyzer/source_frameworks.txt

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
# List of WinObjC framework build directories to parse
2+
# paths are relative to $(BASE_SEARCH_PATH) set by --sdkpath
3+
######################################################
4+
{frameworkEntries: [
5+
{name: "Accelerate", path: "build\\Accelerate\\lib"},
6+
{name: "Accelerate", path: "build\\Accelerate\\dll"},
7+
{name: "Accounts", path: "build\\Accounts\\lib"},
8+
{name: "Accounts", path: "build\\Accounts\\dll"},
9+
{name: "AddressBook", path: "build\\AddressBook\\lib"},
10+
{name: "AddressBook", path: "build\\AddressBook\\dll"},
11+
{name: "AddressBookUI", path: "build\\AddressBookUI\\lib"},
12+
{name: "AddressBookUI", path: "build\\AddressBookUI\\dll"},
13+
{name: "AdSupport", path: "build\\AdSupport\\lib"},
14+
{name: "AdSupport", path: "build\\AdSupport\\dll"},
15+
{name: "AssetsLibrary", path: "build\\AssetsLibrary\\lib"},
16+
{name: "AssetsLibrary", path: "build\\AssetsLibrary\\dll"},
17+
{name: "AudioToolbox", path: "build\\AudioToolbox\\lib"},
18+
{name: "AudioToolbox", path: "build\\AudioToolbox\\dll"},
19+
{name: "AudioUnit", path: "build\\AudioUnit\\lib"},
20+
{name: "AudioUnit", path: "build\\AudioUnit\\dll"},
21+
{name: "AVFoundation", path: "build\\AVFoundation\\lib"},
22+
{name: "AVFoundation", path: "build\\AVFoundation\\dll"},
23+
{name: "AVKit", path: "build\\AVKit\\lib"},
24+
{name: "AVKit", path: "build\\AVKit\\dll"},
25+
{name: "CFNetwork", path: "build\\CFNetwork\\lib"},
26+
{name: "CFNetwork", path: "build\\CFNetwork\\dll"},
27+
{name: "CloudKit", path: "build\\CloudKit\\lib"},
28+
{name: "CloudKit", path: "build\\CloudKit\\dll"},
29+
{name: "CommonCrypto", path: "build\\CommonCrypto\\lib"},
30+
{name: "CommonCrypto", path: "build\\CommonCrypto\\dll"},
31+
{name: "Contacts", path: "build\\Contacts\\lib"},
32+
{name: "Contacts", path: "build\\Contacts\\dll"},
33+
{name: "ContactsUI", path: "build\\ContactsUI\\lib"},
34+
{name: "ContactsUI", path: "build\\ContactsUI\\dll"},
35+
{name: "CoreAudio", path: "build\\CoreAudio\\lib"},
36+
{name: "CoreAudio", path: "build\\CoreAudio\\dll"},
37+
{name: "CoreAudioKit", path: "build\\CoreAudioKit\\lib"},
38+
{name: "CoreAudioKit", path: "build\\CoreAudioKit\\dll"},
39+
{name: "CoreBluetooth", path: "build\\CoreBluetooth\\lib"},
40+
{name: "CoreBluetooth", path: "build\\CoreBluetooth\\dll"},
41+
{name: "CoreData", path: "build\\CoreData\\lib"},
42+
{name: "CoreData", path: "build\\CoreData\\dll"},
43+
{name: "CoreFoundation", path: "build\\CoreFoundation\\lib"},
44+
{name: "CoreFoundation", path: "build\\CoreFoundation\\dll"},
45+
{name: "CoreFoundation", path: "build\\CoreFoundationAdditions\\lib"},
46+
{name: "CoreFoundation", path: "build\\CoreFoundationAdditions\\dll"},
47+
{name: "CoreGraphics", path: "build\\CoreGraphics\\lib"},
48+
{name: "CoreGraphics", path: "build\\CoreGraphics\\dll"},
49+
{name: "CoreImage", path: "build\\CoreImage\\lib"},
50+
{name: "CoreImage", path: "build\\CoreImage\\dll"},
51+
{name: "CoreLocation", path: "build\\CoreLocation\\lib"},
52+
{name: "CoreLocation", path: "build\\CoreLocation\\dll"},
53+
{name: "CoreMedia", path: "build\\CoreMedia\\lib"},
54+
{name: "CoreMedia", path: "build\\CoreMedia\\dll"},
55+
{name: "CoreMIDI", path: "build\\CoreMIDI\\lib"},
56+
{name: "CoreMIDI", path: "build\\CoreMIDI\\dll"},
57+
{name: "CoreMotion", path: "build\\CoreMotion\\lib"},
58+
{name: "CoreMotion", path: "build\\CoreMotion\\dll"},
59+
{name: "CoreSpotlight", path: "build\\CoreSpotlight\\lib"},
60+
{name: "CoreSpotlight", path: "build\\CoreSpotlight\\dll"},
61+
{name: "CoreTelephony", path: "build\\CoreTelephony\\lib"},
62+
{name: "CoreTelephony", path: "build\\CoreTelephony\\dll"},
63+
{name: "CoreText", path: "build\\CoreText\\lib"},
64+
{name: "CoreText", path: "build\\CoreText\\dll"},
65+
{name: "CoreVideo", path: "build\\CoreVideo\\lib"},
66+
{name: "CoreVideo", path: "build\\CoreVideo\\dll"},
67+
{name: "EventKit", path: "build\\EventKit\\lib"},
68+
{name: "EventKit", path: "build\\EventKit\\dll"},
69+
{name: "EventKitUI", path: "build\\EventKitUI\\lib"},
70+
{name: "EventKitUI", path: "build\\EventKitUI\\dll"},
71+
{name: "ExternalAccessory", path: "build\\ExternalAccessory\\lib"},
72+
{name: "ExternalAccessory", path: "build\\ExternalAccessory\\dll"},
73+
{name: "Foundation", path: "build\\Foundation\\lib"},
74+
{name: "Foundation", path: "build\\Foundation\\dll"},
75+
{name: "GameController", path: "build\\GameController\\lib"},
76+
{name: "GameController", path: "build\\GameController\\dll"},
77+
{name: "GameKit", path: "build\\GameKit\\lib"},
78+
{name: "GameKit", path: "build\\GameKit\\dll"},
79+
{name: "GameplayKit", path: "build\\GameplayKit\\lib"},
80+
{name: "GameplayKit", path: "build\\GameplayKit\\dll"},
81+
{name: "GLKit", path: "build\\GLKit\\lib"},
82+
{name: "GLKit", path: "build\\GLKit\\dll"},
83+
{name: "HealthKit", path: "build\\HealthKit\\lib"},
84+
{name: "HealthKit", path: "build\\HealthKit\\dll"},
85+
{name: "HomeKit", path: "build\\HomeKit\\lib"},
86+
{name: "HomeKit", path: "build\\HomeKit\\dll"},
87+
{name: "iAd", path: "build\\iAd\\lib"},
88+
{name: "iAd", path: "build\\iAd\\dll"},
89+
{name: "ImageIO", path: "build\\ImageIO\\lib"},
90+
{name: "ImageIO", path: "build\\ImageIO\\dll"},
91+
{name: "LocalAuthentication", path: "build\\LocalAuthentication\\lib"},
92+
{name: "LocalAuthentication", path: "build\\LocalAuthentication\\dll"},
93+
{name: "MapKit", path: "build\\MapKit\\lib"},
94+
{name: "MapKit", path: "build\\MapKit\\dll"},
95+
{name: "MediaAccessibility", path: "build\\MediaAccessibility\\lib"},
96+
{name: "MediaAccessibility", path: "build\\MediaAccessibility\\dll"},
97+
{name: "MediaPlayer", path: "build\\MediaPlayer\\lib"},
98+
{name: "MediaPlayer", path: "build\\MediaPlayer\\dll"},
99+
{name: "MessageUI", path: "build\\MessageUI\\lib"},
100+
{name: "MessageUI", path: "build\\MessageUI\\dll"},
101+
{name: "Metal", path: "build\\Metal\\lib"},
102+
{name: "Metal", path: "build\\Metal\\dll"},
103+
{name: "MetalKit", path: "build\\MetalKit\\lib"},
104+
{name: "MetalKit", path: "build\\MetalKit\\dll"},
105+
{name: "MetalPerformanceShaders", path: "build\\MetalPerformanceShaders\\lib"},
106+
{name: "MetalPerformanceShaders", path: "build\\MetalPerformanceShaders\\dll"},
107+
{name: "MobileCoreServices", path: "build\\MobileCoreServices\\lib"},
108+
{name: "MobileCoreServices", path: "build\\MobileCoreServices\\dll"},
109+
{name: "ModelIO", path: "build\\ModelIO\\lib"},
110+
{name: "ModelIO", path: "build\\ModelIO\\dll"},
111+
{name: "MultipeerConnectivity", path: "build\\MultipeerConnectivity\\lib"},
112+
{name: "MultipeerConnectivity", path: "build\\MultipeerConnectivity\\dll"},
113+
{name: "NetworkExtension", path: "build\\NetworkExtension\\lib"},
114+
{name: "NetworkExtension", path: "build\\NetworkExtension\\dll"},
115+
{name: "NewsstandKit", path: "build\\NewsstandKit\\lib"},
116+
{name: "NewsstandKit", path: "build\\NewsstandKit\\dll"},
117+
{name: "NotificationCenter", path: "build\\NotificationCenter\\lib"},
118+
{name: "NotificationCenter", path: "build\\NotificationCenter\\dll"},
119+
{name: "OpenGLES", path: "build\\OpenGLES\\lib"},
120+
{name: "OpenGLES", path: "build\\OpenGLES\\dll"},
121+
{name: "PassKit", path: "build\\PassKit\\lib"},
122+
{name: "PassKit", path: "build\\PassKit\\dll"},
123+
{name: "Photos", path: "build\\Photos\\lib"},
124+
{name: "Photos", path: "build\\Photos\\dll"},
125+
{name: "PhotosUI", path: "build\\PhotosUI\\lib"},
126+
{name: "PhotosUI", path: "build\\PhotosUI\\dll"},
127+
{name: "PushKit", path: "build\\PushKit\\lib"},
128+
{name: "PushKit", path: "build\\PushKit\\dll"},
129+
{name: "QuartzCore", path: "build\\QuartzCore\\lib"},
130+
{name: "QuartzCore", path: "build\\QuartzCore\\dll"},
131+
{name: "QuickLook", path: "build\\QuickLook\\lib"},
132+
{name: "QuickLook", path: "build\\QuickLook\\dll"},
133+
{name: "ReplayKit", path: "build\\ReplayKit\\lib"},
134+
{name: "ReplayKit", path: "build\\ReplayKit\\dll"},
135+
{name: "SafariServices", path: "build\\SafariServices\\lib"},
136+
{name: "SafariServices", path: "build\\SafariServices\\dll"},
137+
{name: "SceneKit", path: "build\\SceneKit\\lib"},
138+
{name: "SceneKit", path: "build\\SceneKit\\dll"},
139+
{name: "Security", path: "build\\Security\\lib"},
140+
{name: "Security", path: "build\\Security\\dll"},
141+
{name: "Social", path: "build\\Social\\lib"},
142+
{name: "Social", path: "build\\Social\\dll"},
143+
{name: "SpriteKit", path: "build\\SpriteKit\\lib"},
144+
{name: "SpriteKit", path: "build\\SpriteKit\\dll"},
145+
{name: "Starboard", path: "build\\Starboard\\lib"},
146+
{name: "Starboard", path: "build\\Starboard\\dll"},
147+
{name: "StoreKit", path: "build\\StoreKit\\lib"},
148+
{name: "StoreKit", path: "build\\StoreKit\\dll"},
149+
{name: "SystemConfiguration", path: "build\\SystemConfiguration\\lib"},
150+
{name: "SystemConfiguration", path: "build\\SystemConfiguration\\dll"},
151+
{name: "Twitter", path: "build\\Twitter\\lib"},
152+
{name: "Twitter", path: "build\\Twitter\\dll"},
153+
{name: "UIKit", path: "build\\UIKit\\lib"},
154+
{name: "UIKit", path: "build\\UIKit\\dll"},
155+
{name: "WatchConnectivity", path: "build\\WatchConnectivity\\lib"},
156+
{name: "WatchConnectivity", path: "build\\WatchConnectivity\\dll"},
157+
{name: "WatchKit", path: "build\\WatchKit\\lib"},
158+
{name: "WatchKit", path: "build\\WatchKit\\dll"},
159+
{name: "WebKit", path: "build\\WebKit\\lib"},
160+
{name: "WebKit", path: "build\\WebKit\\dll"}
161+
]}

.ci-repo.xml

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,10 @@
44
<Project>WinObjC</Project>
55
<BuildDefinitions>
66
<BuildDefinitionSet Name="Github Pull Request" MatchRemote="*github*">
7-
<ID Configuration="Debug">74</ID>
8-
<ID Configuration="Release">72</ID>
7+
<ID>98</ID>
98
<ConfigMappings>
109
<Parameter Key="PullRequest">$REMOTEURL $BRANCH</Parameter>
11-
<SourceBranch>$SOURCEBRANCH</SourceBranch>
12-
</ConfigMappings>
13-
</BuildDefinitionSet>
14-
<BuildDefinitionSet Name="Full"> <!-- No MatchRemote as this one must be specified by BuildFilter -->
15-
<ID Configuration="Debug">82</ID>
16-
<ID Configuration="Release">83</ID>
17-
<ConfigMappings>
10+
<Parameter Key="BuildConfiguration">$CONFIG</Parameter>
1811
<SourceBranch>$SOURCEBRANCH</SourceBranch>
1912
</ConfigMappings>
2013
</BuildDefinitionSet>

.gitignore

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,16 @@ Frameworks/Include/CFRuntime.h
122122
Frameworks/Include/CFStreamPriv.h
123123
Frameworks/Include/CFRegularExpression.h
124124

125+
*nuget.props
126+
*nuget.targets
127+
*.log
128+
125129
#### DO NOT IGNORE ####
126130
# The prebuilts! We want those.
127-
!deps/prebuilt/**/[Dd]ebug
128-
!deps/prebuilt/**/[Rr]elease
129-
# The repository root /bin, and the build tools bin/
130-
!/bin
131-
!/msvc/**/bin
131+
!/**/deps/prebuilt/**/[Dd]ebug
132+
!/**/deps/prebuilt/**/[Rr]elease
133+
# The build package /bin, and the build tools bin/
134+
!/tools/bin
135+
!/**/msvc/**/bin
136+
137+
.tools

.gitmodules

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
[submodule "tools/vsimporter/third-party/PlistCpp"]
2-
path = tools/vsimporter/third-party/PlistCpp
3-
url = https://github.com/Microsoft/PlistCpp.git
4-
[submodule "tools/vsimporter/third-party/sole"]
5-
path = tools/vsimporter/third-party/sole
6-
url = https://github.com/r-lyeh/sole.git
71
[submodule "deps/3rdparty/openssl"]
82
path = deps/3rdparty/openssl
93
url = https://github.com/microsoft/openssl
@@ -13,3 +7,9 @@
137
[submodule "deps/3rdparty/libobjc2"]
148
path = deps/3rdparty/libobjc2
159
url = https://github.com/Microsoft/libobjc2
10+
[submodule "tools/vsimporter/third-party/PlistCpp"]
11+
path = tools/vsimporter/third-party/PlistCpp
12+
url = https://github.com/Microsoft/PlistCpp.git
13+
[submodule "tools/vsimporter/third-party/sole"]
14+
path = tools/vsimporter/third-party/sole
15+
url = https://github.com/r-lyeh/sole.git

Frameworks/Accelerate/vImage.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "Accelerate/vImage.h"
1919
#include "ErrorHandling.h"
2020
#include "LoggingNative.h"
21+
#include "IwMalloc.h"
2122
#include <algorithm>
2223
#include <new>
2324

Frameworks/CoreGraphics/CGAffineTransform.mm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
#import <math.h>
2323

24+
#import <CoreGraphics/CGAffineTransform.h>
25+
2426
const CGAffineTransform CGAffineTransformIdentity = { 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f };
2527

2628
/**

0 commit comments

Comments
 (0)