Browse Source

Expand mobile compilation script to include a mode for macOS and add respective configurations to the Xcode project

This allows creating a VLCKit binary for macOS with statically linked modules
Felix Paul Kühne 7 years ago
parent
commit
a0359db3ab
3 changed files with 582 additions and 72 deletions
  1. 2 0
      Sources/VLCLibrary.m
  2. 417 5
      VLCKit.xcodeproj/project.pbxproj
  3. 163 67
      buildMobileVLCKit.sh

+ 2 - 0
Sources/VLCLibrary.m

@@ -29,6 +29,8 @@
 # include "vlc-plugins-AppleTV.h"
 #elif TARGET_OS_IPHONE
 # include "vlc-plugins-iPhone.h"
+#else
+# include "vlc-plugins-MacOSX.h"
 #endif
 
 #ifdef HAVE_CONFIG_H

+ 417 - 5
VLCKit.xcodeproj/project.pbxproj

@@ -7,6 +7,66 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		7DC28D4B2019406B002D05C4 /* StaticLibVLC.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DC28D4A2019406B002D05C4 /* StaticLibVLC.m */; };
+		7DC28D4E20194117002D05C4 /* VLCEventManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EF78BD0D0CAEEEC300354E6E /* VLCEventManager.h */; settings = {ATTRIBUTES = (); }; };
+		7DC28D4F20194117002D05C4 /* VLCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = EF78BD120CAEEEE700354E6E /* VLCKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5020194117002D05C4 /* VLCMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = EF78BD130CAEEEE700354E6E /* VLCMedia.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5120194117002D05C4 /* VLCCustomDialogProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D34F5581C90A954008A39F0 /* VLCCustomDialogProvider.h */; };
+		7DC28D5220194117002D05C4 /* VLCMediaLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = EF78BD150CAEEEE700354E6E /* VLCMediaLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5320194117002D05C4 /* VLCMediaList.h in Headers */ = {isa = PBXBuildFile; fileRef = EF78BD160CAEEEE700354E6E /* VLCMediaList.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5420194117002D05C4 /* VLCTime.h in Headers */ = {isa = PBXBuildFile; fileRef = EF78BD190CAEEEE700354E6E /* VLCTime.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5520194117002D05C4 /* VLCVideoView.h in Headers */ = {isa = PBXBuildFile; fileRef = EF78BD1A0CAEEEE700354E6E /* VLCVideoView.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5620194117002D05C4 /* VLCMediaPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = EF8BB8CE0CAFA8D80038A613 /* VLCMediaPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5720194117002D05C4 /* VLCAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = EF73118E0CB5797B009473B4 /* VLCAudio.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5820194117002D05C4 /* VLCLibVLCBridging.h in Headers */ = {isa = PBXBuildFile; fileRef = EFD551DC0CC6DD720074CEE1 /* VLCLibVLCBridging.h */; };
+		7DC28D5920194117002D05C4 /* VLCHelperCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DF7A2031D197E8E0001FF69 /* VLCHelperCode.h */; };
+		7DC28D5A20194117002D05C4 /* VLCEmbeddedDialogProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D34F5591C90A954008A39F0 /* VLCEmbeddedDialogProvider.h */; };
+		7DC28D5B20194117002D05C4 /* VLCMediaDiscoverer.h in Headers */ = {isa = PBXBuildFile; fileRef = 637D5ABC0CF6F2650073EA45 /* VLCMediaDiscoverer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5C20194117002D05C4 /* VLCiOSLegacyDialogProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D34F55A1C90A954008A39F0 /* VLCiOSLegacyDialogProvider.h */; };
+		7DC28D5D20194117002D05C4 /* VLCVideoLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6341FCAE0D2C0929002A97B7 /* VLCVideoLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5E20194117002D05C4 /* VLCLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 637CFB930D2D280800A041B6 /* VLCLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D5F20194117002D05C4 /* VLCVideoCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A0CEA20D2EF13000F2C039 /* VLCVideoCommon.h */; };
+		7DC28D6020194117002D05C4 /* VLCDialogProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D34F5611C90A96C008A39F0 /* VLCDialogProvider.h */; };
+		7DC28D6120194117002D05C4 /* VLCStreamSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 632A0E830D3835C400AFC99B /* VLCStreamSession.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D6220194117002D05C4 /* VLCStreamOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 632A0EC10D38392E00AFC99B /* VLCStreamOutput.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D6320194117002D05C4 /* VLCMediaThumbnailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 63D88D92124E9BF600F65FA0 /* VLCMediaThumbnailer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D6420194117002D05C4 /* VLCMediaListPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 63014B7D1042E64A00534090 /* VLCMediaListPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DC28D6620194117002D05C4 /* VLCEventManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD3C0CAEEFF600354E6E /* VLCEventManager.m */; };
+		7DC28D6720194117002D05C4 /* VLCLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD3D0CAEEFF600354E6E /* VLCLibrary.m */; };
+		7DC28D6820194117002D05C4 /* VLCMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD3E0CAEEFF600354E6E /* VLCMedia.m */; };
+		7DC28D6920194117002D05C4 /* VLCMediaLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD400CAEEFF600354E6E /* VLCMediaLibrary.m */; };
+		7DC28D6A20194117002D05C4 /* VLCMediaList.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD410CAEEFF600354E6E /* VLCMediaList.m */; };
+		7DC28D6B20194117002D05C4 /* VLCTime.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD440CAEEFF600354E6E /* VLCTime.m */; };
+		7DC28D6C20194117002D05C4 /* VLCVideoView.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD450CAEEFF600354E6E /* VLCVideoView.m */; };
+		7DC28D6D20194117002D05C4 /* VLCCustomDialogProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D34F5641C90A98B008A39F0 /* VLCCustomDialogProvider.m */; };
+		7DC28D6E20194117002D05C4 /* VLCMediaPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = EF8BB8CF0CAFA8D80038A613 /* VLCMediaPlayer.m */; };
+		7DC28D6F20194117002D05C4 /* VLCAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = EF73118F0CB5797B009473B4 /* VLCAudio.m */; };
+		7DC28D7020194117002D05C4 /* VLCDialogProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D34F5651C90A98B008A39F0 /* VLCDialogProvider.m */; };
+		7DC28D7120194117002D05C4 /* VLCMediaDiscoverer.m in Sources */ = {isa = PBXBuildFile; fileRef = 637D5ADB0CF6F2720073EA45 /* VLCMediaDiscoverer.m */; };
+		7DC28D7220194117002D05C4 /* VLCVideoLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6341FCB00D2C0936002A97B7 /* VLCVideoLayer.m */; };
+		7DC28D7320194117002D05C4 /* VLCVideoCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = A7A0CEA30D2EF13000F2C039 /* VLCVideoCommon.m */; };
+		7DC28D7420194117002D05C4 /* VLCStreamSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 632A0E840D3835C400AFC99B /* VLCStreamSession.m */; };
+		7DC28D7520194117002D05C4 /* VLCStreamOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 632A0EC20D38392E00AFC99B /* VLCStreamOutput.m */; };
+		7DC28D7620194117002D05C4 /* VLCMediaListPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 63014A781042ACE100534090 /* VLCMediaListPlayer.m */; };
+		7DC28D7720194117002D05C4 /* VLCMediaThumbnailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 636E974C11E8DCF1002FE8A9 /* VLCMediaThumbnailer.m */; };
+		7DC28D7820194117002D05C4 /* VLCHelperCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DF7A2041D197E8E0001FF69 /* VLCHelperCode.m */; };
+		7DC28D7A20194117002D05C4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
+		7DC28D7B20194117002D05C4 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6384FD070D0DBA20005EB1F7 /* QuartzCore.framework */; };
+		7DC28D8120194134002D05C4 /* libStaticLibVLC.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D4120194043002D05C4 /* libStaticLibVLC.a */; };
+		7DC28D83201941A4002D05C4 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D82201941A4002D05C4 /* libiconv.tbd */; };
+		7DC28D85201942A9002D05C4 /* vlc-plugins-MacOSX.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DC28D84201942A9002D05C4 /* vlc-plugins-MacOSX.h */; };
+		7DC28D87201942A9002D05C4 /* vlc-plugins-MacOSX.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DC28D84201942A9002D05C4 /* vlc-plugins-MacOSX.h */; };
+		7DC28D89201942CD002D05C4 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D88201942CD002D05C4 /* libc++.tbd */; };
+		7DC28D8B201942D2002D05C4 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D8A201942D2002D05C4 /* CoreAudio.framework */; };
+		7DC28D8D201942D7002D05C4 /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D8C201942D7002D05C4 /* VideoToolbox.framework */; };
+		7DC28D8F201942E3002D05C4 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D8E201942E3002D05C4 /* CoreGraphics.framework */; };
+		7DC28D91201942E8002D05C4 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D90201942E8002D05C4 /* IOKit.framework */; };
+		7DC28D93201942EE002D05C4 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D92201942EE002D05C4 /* CoreMedia.framework */; };
+		7DC28D9520194301002D05C4 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D9420194301002D05C4 /* Security.framework */; };
+		7DC28D9720194305002D05C4 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D9620194305002D05C4 /* OpenGL.framework */; };
+		7DC28D9920194315002D05C4 /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D9820194315002D05C4 /* libbz2.tbd */; };
+		7DC28D9B2019431B002D05C4 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D9A2019431A002D05C4 /* AudioUnit.framework */; };
+		7DC28D9D20194324002D05C4 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DC28D9C20194324002D05C4 /* AudioToolbox.framework */; };
 		7DF2DBF71D63145D00CDA90D /* VLCEventManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD3C0CAEEFF600354E6E /* VLCEventManager.m */; };
 		7DF2DBF81D63145D00CDA90D /* VLCLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD3D0CAEEFF600354E6E /* VLCLibrary.m */; };
 		7DF2DBF91D63145D00CDA90D /* VLCMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = EF78BD3E0CAEEFF600354E6E /* VLCMedia.m */; };
@@ -80,6 +140,23 @@
 		7D34F5611C90A96C008A39F0 /* VLCDialogProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCDialogProvider.h; path = Public/VLCDialogProvider.h; sourceTree = "<group>"; };
 		7D34F5641C90A98B008A39F0 /* VLCCustomDialogProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCCustomDialogProvider.m; sourceTree = "<group>"; };
 		7D34F5651C90A98B008A39F0 /* VLCDialogProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCDialogProvider.m; sourceTree = "<group>"; };
+		7DC28D3C201938D9002D05C4 /* vlc-plugins-MacOSX.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "vlc-plugins-MacOSX.xcconfig"; path = "Resources/MobileVLCKit/vlc-plugins-MacOSX.xcconfig"; sourceTree = "<group>"; };
+		7DC28D4120194043002D05C4 /* libStaticLibVLC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libStaticLibVLC.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		7DC28D4A2019406B002D05C4 /* StaticLibVLC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = StaticLibVLC.m; path = Sources/StaticLibVLC.m; sourceTree = SOURCE_ROOT; };
+		7DC28D7F20194117002D05C4 /* DynamicVLCKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DynamicVLCKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		7DC28D82201941A4002D05C4 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
+		7DC28D84201942A9002D05C4 /* vlc-plugins-MacOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "vlc-plugins-MacOSX.h"; path = "Resources/MobileVLCKit/vlc-plugins-MacOSX.h"; sourceTree = SOURCE_ROOT; };
+		7DC28D88201942CD002D05C4 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
+		7DC28D8A201942D2002D05C4 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		7DC28D8C201942D7002D05C4 /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; };
+		7DC28D8E201942E3002D05C4 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		7DC28D90201942E8002D05C4 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
+		7DC28D92201942EE002D05C4 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
+		7DC28D9420194301002D05C4 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+		7DC28D9620194305002D05C4 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
+		7DC28D9820194315002D05C4 /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = usr/lib/libbz2.tbd; sourceTree = SDKROOT; };
+		7DC28D9A2019431A002D05C4 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; };
+		7DC28D9C20194324002D05C4 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		7DF2DC2D1D63145D00CDA90D /* VLCKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VLCKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		7DF7A2031D197E8E0001FF69 /* VLCHelperCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCHelperCode.h; path = Headers/Internal/VLCHelperCode.h; sourceTree = SOURCE_ROOT; };
 		7DF7A2041D197E8E0001FF69 /* VLCHelperCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCHelperCode.m; sourceTree = "<group>"; };
@@ -119,6 +196,35 @@
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+		7DC28D3E20194043002D05C4 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7DC28D7920194117002D05C4 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DC28D9D20194324002D05C4 /* AudioToolbox.framework in Frameworks */,
+				7DC28D9B2019431B002D05C4 /* AudioUnit.framework in Frameworks */,
+				7DC28D9920194315002D05C4 /* libbz2.tbd in Frameworks */,
+				7DC28D9720194305002D05C4 /* OpenGL.framework in Frameworks */,
+				7DC28D9520194301002D05C4 /* Security.framework in Frameworks */,
+				7DC28D93201942EE002D05C4 /* CoreMedia.framework in Frameworks */,
+				7DC28D91201942E8002D05C4 /* IOKit.framework in Frameworks */,
+				7DC28D8F201942E3002D05C4 /* CoreGraphics.framework in Frameworks */,
+				7DC28D8D201942D7002D05C4 /* VideoToolbox.framework in Frameworks */,
+				7DC28D8B201942D2002D05C4 /* CoreAudio.framework in Frameworks */,
+				7DC28D89201942CD002D05C4 /* libc++.tbd in Frameworks */,
+				7DC28D83201941A4002D05C4 /* libiconv.tbd in Frameworks */,
+				7DC28D8120194134002D05C4 /* libStaticLibVLC.a in Frameworks */,
+				7DC28D7A20194117002D05C4 /* Cocoa.framework in Frameworks */,
+				7DC28D7B20194117002D05C4 /* QuartzCore.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		7DF2DC271D63145D00CDA90D /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -135,6 +241,8 @@
 			isa = PBXGroup;
 			children = (
 				7DF2DC2D1D63145D00CDA90D /* VLCKit.framework */,
+				7DC28D4120194043002D05C4 /* libStaticLibVLC.a */,
+				7DC28D7F20194117002D05C4 /* DynamicVLCKit.framework */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -147,6 +255,7 @@
 				32C88DFF0371C24200C91783 /* Other Sources */,
 				089C1665FE841158C02AAC07 /* Resources */,
 				0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
+				7DC28D4220194043002D05C4 /* StaticLibVLC */,
 				034768DFFF38A50411DB9C8B /* Products */,
 				7DF2DC2F1D6314FB00CDA90D /* Frameworks */,
 			);
@@ -216,6 +325,7 @@
 			isa = PBXGroup;
 			children = (
 				32DBCF5E0370ADEE00C91783 /* Prefix.pch */,
+				7DC28D3C201938D9002D05C4 /* vlc-plugins-MacOSX.xcconfig */,
 			);
 			name = "Other Sources";
 			sourceTree = "<group>";
@@ -241,6 +351,7 @@
 		637CFB960D2D281900A041B6 /* Internal */ = {
 			isa = PBXGroup;
 			children = (
+				7DC28D84201942A9002D05C4 /* vlc-plugins-MacOSX.h */,
 				EFD551DC0CC6DD720074CEE1 /* VLCLibVLCBridging.h */,
 				EF78BD0D0CAEEEC300354E6E /* VLCEventManager.h */,
 				A7A0CEA20D2EF13000F2C039 /* VLCVideoCommon.h */,
@@ -260,9 +371,29 @@
 			name = Dialogs;
 			sourceTree = "<group>";
 		};
+		7DC28D4220194043002D05C4 /* StaticLibVLC */ = {
+			isa = PBXGroup;
+			children = (
+				7DC28D4A2019406B002D05C4 /* StaticLibVLC.m */,
+			);
+			path = StaticLibVLC;
+			sourceTree = "<group>";
+		};
 		7DF2DC2F1D6314FB00CDA90D /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				7DC28D9C20194324002D05C4 /* AudioToolbox.framework */,
+				7DC28D9A2019431A002D05C4 /* AudioUnit.framework */,
+				7DC28D9820194315002D05C4 /* libbz2.tbd */,
+				7DC28D9620194305002D05C4 /* OpenGL.framework */,
+				7DC28D9420194301002D05C4 /* Security.framework */,
+				7DC28D92201942EE002D05C4 /* CoreMedia.framework */,
+				7DC28D90201942E8002D05C4 /* IOKit.framework */,
+				7DC28D8E201942E3002D05C4 /* CoreGraphics.framework */,
+				7DC28D8C201942D7002D05C4 /* VideoToolbox.framework */,
+				7DC28D8A201942D2002D05C4 /* CoreAudio.framework */,
+				7DC28D88201942CD002D05C4 /* libc++.tbd */,
+				7DC28D82201941A4002D05C4 /* libiconv.tbd */,
 			);
 			name = Frameworks;
 			sourceTree = "<group>";
@@ -331,6 +462,44 @@
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
+		7DC28D3F20194043002D05C4 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7DC28D4D20194117002D05C4 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DC28D4E20194117002D05C4 /* VLCEventManager.h in Headers */,
+				7DC28D4F20194117002D05C4 /* VLCKit.h in Headers */,
+				7DC28D5020194117002D05C4 /* VLCMedia.h in Headers */,
+				7DC28D5120194117002D05C4 /* VLCCustomDialogProvider.h in Headers */,
+				7DC28D5220194117002D05C4 /* VLCMediaLibrary.h in Headers */,
+				7DC28D5320194117002D05C4 /* VLCMediaList.h in Headers */,
+				7DC28D5420194117002D05C4 /* VLCTime.h in Headers */,
+				7DC28D5520194117002D05C4 /* VLCVideoView.h in Headers */,
+				7DC28D5620194117002D05C4 /* VLCMediaPlayer.h in Headers */,
+				7DC28D5720194117002D05C4 /* VLCAudio.h in Headers */,
+				7DC28D5820194117002D05C4 /* VLCLibVLCBridging.h in Headers */,
+				7DC28D5920194117002D05C4 /* VLCHelperCode.h in Headers */,
+				7DC28D5A20194117002D05C4 /* VLCEmbeddedDialogProvider.h in Headers */,
+				7DC28D5B20194117002D05C4 /* VLCMediaDiscoverer.h in Headers */,
+				7DC28D5C20194117002D05C4 /* VLCiOSLegacyDialogProvider.h in Headers */,
+				7DC28D5D20194117002D05C4 /* VLCVideoLayer.h in Headers */,
+				7DC28D5E20194117002D05C4 /* VLCLibrary.h in Headers */,
+				7DC28D5F20194117002D05C4 /* VLCVideoCommon.h in Headers */,
+				7DC28D6020194117002D05C4 /* VLCDialogProvider.h in Headers */,
+				7DC28D6120194117002D05C4 /* VLCStreamSession.h in Headers */,
+				7DC28D6220194117002D05C4 /* VLCStreamOutput.h in Headers */,
+				7DC28D6320194117002D05C4 /* VLCMediaThumbnailer.h in Headers */,
+				7DC28D87201942A9002D05C4 /* vlc-plugins-MacOSX.h in Headers */,
+				7DC28D6420194117002D05C4 /* VLCMediaListPlayer.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		7DF2DC0C1D63145D00CDA90D /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
@@ -357,6 +526,7 @@
 				7DF2DC201D63145D00CDA90D /* VLCStreamSession.h in Headers */,
 				7DF2DC211D63145D00CDA90D /* VLCStreamOutput.h in Headers */,
 				7DF2DC221D63145D00CDA90D /* VLCMediaThumbnailer.h in Headers */,
+				7DC28D85201942A9002D05C4 /* vlc-plugins-MacOSX.h in Headers */,
 				7DF2DC231D63145D00CDA90D /* VLCMediaListPlayer.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -381,6 +551,42 @@
 /* End PBXLegacyTarget section */
 
 /* Begin PBXNativeTarget section */
+		7DC28D4020194043002D05C4 /* StaticLibVLC */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 7DC28D4720194043002D05C4 /* Build configuration list for PBXNativeTarget "StaticLibVLC" */;
+			buildPhases = (
+				7DC28D3D20194043002D05C4 /* Sources */,
+				7DC28D3E20194043002D05C4 /* Frameworks */,
+				7DC28D3F20194043002D05C4 /* Headers */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = StaticLibVLC;
+			productName = StaticLibVLC;
+			productReference = 7DC28D4120194043002D05C4 /* libStaticLibVLC.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		7DC28D4C20194117002D05C4 /* DynamicVLCKit */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 7DC28D7C20194117002D05C4 /* Build configuration list for PBXNativeTarget "DynamicVLCKit" */;
+			buildPhases = (
+				7DC28D4D20194117002D05C4 /* Headers */,
+				7DC28D6520194117002D05C4 /* Sources */,
+				7DC28D7920194117002D05C4 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			comments = "-lvlc -lvlc-control -dylib_file @loader_path/../lib/vlc_libintl.dylib:$(TARGET_BUILD_DIR)/$(PROJECT_NAME).framework/lib/vlc_libintl.dylib -dylib_file @loader_path/../lib/libvlc.dylib:$(TARGET_BUILD_DIR)/$(PROJECT_NAME).framework/lib/libvlc.dylib";
+			dependencies = (
+			);
+			name = DynamicVLCKit;
+			productInstallPath = "$(HOME)/Library/Frameworks";
+			productName = VLC;
+			productReference = 7DC28D7F20194117002D05C4 /* DynamicVLCKit.framework */;
+			productType = "com.apple.product-type.framework";
+		};
 		7DF2DBF41D63145D00CDA90D /* VLCKit */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 7DF2DC2A1D63145D00CDA90D /* Build configuration list for PBXNativeTarget "VLCKit" */;
@@ -413,6 +619,11 @@
 						CreatedOnToolsVersion = 8.1;
 						ProvisioningStyle = Automatic;
 					};
+					7DC28D4020194043002D05C4 = {
+						CreatedOnToolsVersion = 9.2;
+						DevelopmentTeam = 75GAHG3SZQ;
+						ProvisioningStyle = Automatic;
+					};
 				};
 			};
 			buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "VLCKit" */;
@@ -432,6 +643,8 @@
 			targets = (
 				7DF2DBF41D63145D00CDA90D /* VLCKit */,
 				7D21B9331DF4915B00E2EBCD /* Build libvlc */,
+				7DC28D4020194043002D05C4 /* StaticLibVLC */,
+				7DC28D4C20194117002D05C4 /* DynamicVLCKit */,
 			);
 		};
 /* End PBXProject section */
@@ -453,6 +666,40 @@
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+		7DC28D3D20194043002D05C4 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DC28D4B2019406B002D05C4 /* StaticLibVLC.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7DC28D6520194117002D05C4 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DC28D6620194117002D05C4 /* VLCEventManager.m in Sources */,
+				7DC28D6720194117002D05C4 /* VLCLibrary.m in Sources */,
+				7DC28D6820194117002D05C4 /* VLCMedia.m in Sources */,
+				7DC28D6920194117002D05C4 /* VLCMediaLibrary.m in Sources */,
+				7DC28D6A20194117002D05C4 /* VLCMediaList.m in Sources */,
+				7DC28D6B20194117002D05C4 /* VLCTime.m in Sources */,
+				7DC28D6C20194117002D05C4 /* VLCVideoView.m in Sources */,
+				7DC28D6D20194117002D05C4 /* VLCCustomDialogProvider.m in Sources */,
+				7DC28D6E20194117002D05C4 /* VLCMediaPlayer.m in Sources */,
+				7DC28D6F20194117002D05C4 /* VLCAudio.m in Sources */,
+				7DC28D7020194117002D05C4 /* VLCDialogProvider.m in Sources */,
+				7DC28D7120194117002D05C4 /* VLCMediaDiscoverer.m in Sources */,
+				7DC28D7220194117002D05C4 /* VLCVideoLayer.m in Sources */,
+				7DC28D7320194117002D05C4 /* VLCVideoCommon.m in Sources */,
+				7DC28D7420194117002D05C4 /* VLCStreamSession.m in Sources */,
+				7DC28D7520194117002D05C4 /* VLCStreamOutput.m in Sources */,
+				7DC28D7620194117002D05C4 /* VLCMediaListPlayer.m in Sources */,
+				7DC28D7720194117002D05C4 /* VLCMediaThumbnailer.m in Sources */,
+				7DC28D7820194117002D05C4 /* VLCHelperCode.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		7DF2DBF61D63145D00CDA90D /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -508,7 +755,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MACOSX_DEPLOYMENT_TARGET = 10.9;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				VALID_ARCHS = x86_64;
@@ -542,7 +789,7 @@
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_FUNCTION = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				MACOSX_DEPLOYMENT_TARGET = 10.9;
 				ONLY_ACTIVE_ARCH = NO;
 				SDKROOT = macosx;
 				VALID_ARCHS = x86_64;
@@ -604,6 +851,153 @@
 			};
 			name = Release;
 		};
+		7DC28D4820194043002D05C4 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7DC28D3C201938D9002D05C4 /* vlc-plugins-MacOSX.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CODE_SIGN_IDENTITY = "Mac Developer";
+				CODE_SIGN_STYLE = Automatic;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				DEVELOPMENT_TEAM = 75GAHG3SZQ;
+				EXECUTABLE_PREFIX = lib;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				OTHER_LIBTOOLFLAGS = "$(PROJECT_DIR)/libvlc/vlc/install-MacOSX/x86_64/lib/libvlccore.a $(PROJECT_DIR)/libvlc/vlc/install-MacOSX/x86_64/lib/libvlc.a $(PROJECT_DIR)/libvlc/vlc/install-MacOSX/x86_64/lib/vlc/libcompat.a $(VLC_PLUGINS_LDFLAGS)";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		7DC28D4920194043002D05C4 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7DC28D3C201938D9002D05C4 /* vlc-plugins-MacOSX.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CODE_SIGN_IDENTITY = "Mac Developer";
+				CODE_SIGN_STYLE = Automatic;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				DEVELOPMENT_TEAM = 75GAHG3SZQ;
+				ENABLE_NS_ASSERTIONS = NO;
+				EXECUTABLE_PREFIX = lib;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OTHER_LIBTOOLFLAGS = "$(PROJECT_DIR)/libvlc/vlc/install-MacOSX/x86_64/lib/libvlccore.a $(PROJECT_DIR)/libvlc/vlc/install-MacOSX/x86_64/lib/libvlc.a $(PROJECT_DIR)/libvlc/vlc/install-MacOSX/x86_64/lib/vlc/libcompat.a $(VLC_PLUGINS_LDFLAGS)";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+		7DC28D7D20194117002D05C4 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7DC28D3C201938D9002D05C4 /* vlc-plugins-MacOSX.xcconfig */;
+			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
+				COMBINE_HIDPI_IMAGES = YES;
+				COPY_PHASE_STRIP = NO;
+				DEFINES_MODULE = YES;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_VERSION = A;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = Headers/PCH/Prefix.pch;
+				HEADER_SEARCH_PATHS = (
+					"$(SRCROOT)/libvlc/vlc/include",
+					"Headers/**",
+				);
+				INFOPLIST_FILE = "$(SRCROOT)/Resources/VLCKit/Info.plist";
+				INSTALL_PATH = "@loader_path/../Frameworks";
+				LIBRARY_SEARCH_PATHS = "$(CONFIGURATION_BUILD_DIR)/$(PRODUCT_NAME).$(WRAPPER_EXTENSION)/lib";
+				PRIVATE_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/PrivateHeaders";
+				PRODUCT_BUNDLE_IDENTIFIER = org.videolan.vlckitframework;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = YES;
+				SDKROOT = macosx;
+				VALID_ARCHS = x86_64;
+				WRAPPER_EXTENSION = framework;
+			};
+			name = Debug;
+		};
+		7DC28D7E20194117002D05C4 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7DC28D3C201938D9002D05C4 /* vlc-plugins-MacOSX.xcconfig */;
+			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES;
+				COMBINE_HIDPI_IMAGES = YES;
+				DEFINES_MODULE = YES;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_VERSION = A;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = Headers/PCH/Prefix.pch;
+				HEADER_SEARCH_PATHS = (
+					"$(SRCROOT)/libvlc/vlc/include",
+					"Headers/**",
+				);
+				INFOPLIST_FILE = "$(SRCROOT)/Resources/VLCKit/Info.plist";
+				INSTALL_PATH = "@loader_path/../Frameworks";
+				LIBRARY_SEARCH_PATHS = "$(CONFIGURATION_BUILD_DIR)/$(PRODUCT_NAME).$(WRAPPER_EXTENSION)/lib";
+				PRIVATE_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/PrivateHeaders";
+				PRODUCT_BUNDLE_IDENTIFIER = org.videolan.vlckitframework;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = YES;
+				SDKROOT = macosx;
+				VALID_ARCHS = x86_64;
+				WRAPPER_EXTENSION = framework;
+			};
+			name = Release;
+		};
 		7DF2DC2B1D63145D00CDA90D /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -694,7 +1088,7 @@
 				1DEB91B308733DA50010E9CD /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
+			defaultConfigurationName = Release;
 		};
 		7D21B9361DF4915B00E2EBCD /* Build configuration list for PBXLegacyTarget "Build libvlc" */ = {
 			isa = XCConfigurationList;
@@ -703,7 +1097,25 @@
 				7D21B9351DF4915B00E2EBCD /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
+			defaultConfigurationName = Release;
+		};
+		7DC28D4720194043002D05C4 /* Build configuration list for PBXNativeTarget "StaticLibVLC" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7DC28D4820194043002D05C4 /* Debug */,
+				7DC28D4920194043002D05C4 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		7DC28D7C20194117002D05C4 /* Build configuration list for PBXNativeTarget "DynamicVLCKit" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7DC28D7D20194117002D05C4 /* Debug */,
+				7DC28D7E20194117002D05C4 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
 		};
 		7DF2DC2A1D63145D00CDA90D /* Build configuration list for PBXNativeTarget "VLCKit" */ = {
 			isa = XCConfigurationList;
@@ -712,7 +1124,7 @@
 				7DF2DC2C1D63145D00CDA90D /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Debug;
+			defaultConfigurationName = Release;
 		};
 /* End XCConfigurationList section */
 	};

+ 163 - 67
buildMobileVLCKit.sh

@@ -16,6 +16,7 @@ NONETWORK=no
 SKIPLIBVLCCOMPILATION=no
 SCARY=yes
 TVOS=no
+MACOS=no
 BITCODE=no
 OSVERSIONMINCFLAG=miphoneos-version-min
 OSVERSIONMINLDFLAG=ios_version_min
@@ -43,6 +44,7 @@ OPTIONS
    -n       Skip script steps requiring network interaction
    -l       Skip libvlc compilation
    -t       Build for tvOS
+   -x       Build for macOS / Mac OS X
    -w       Build a limited stack of non-scary libraries only
    -y       Build universal static libraries
    -b       Enable bitcode
@@ -50,7 +52,7 @@ OPTIONS
 EOF
 }
 
-while getopts "hvwsfbdntlk:a:" OPTION
+while getopts "hvwsfbdxntlk:a:" OPTION
 do
      case $OPTION in
          h)
@@ -101,6 +103,17 @@ do
              OSVERSIONMINCFLAG=mtvos-version-min
              OSVERSIONMINLDFLAG=tvos_version_min
              ;;
+         x)
+             MACOS=yes
+             BITCODE=no
+             SDK_VERSION=`xcrun --sdk macosx --show-sdk-version`
+             SDK_MIN=10.9
+             OSVERSIONMINCFLAG=mmacosx-version-min
+             OSVERSIONMINLDFLAG=macosx_version_min
+             BUILD_DEVICE=yes
+             FARCH=x86_64
+             BUILD_STATIC_FRAMEWORK=no
+             ;;
          ?)
              usage
              exit 1
@@ -272,8 +285,9 @@ buildLibVLC() {
     BITCODE="$4"
     ARCH="$5"
     TVOS="$6"
-    SDK_VERSION="$7"
-    PLATFORM="$8"
+    MACOS="$7"
+    SDK_VERSION="$8"
+    PLATFORM="$9"
     OSSTYLE=iPhone
 
     if [ "$DEBUG" = "yes" ]; then
@@ -285,6 +299,10 @@ buildLibVLC() {
     if [ "$TVOS" = "yes" ]; then
         OSSTYLE=AppleTV
     fi
+    if [ "$MACOS" = "yes" ]; then
+        OSSTYLE=MacOSX
+        PLATFORM=
+    fi
 
     ACTUAL_ARCH=`get_actual_arch $ARCH`
 
@@ -381,9 +399,13 @@ buildLibVLC() {
     fi
 
     if [ "$TVOS" = "yes" ]; then
-        TVOSOPTIONS="--disable-libarchive"
+        CUSTOMOSOPTIONS="--disable-libarchive"
     else
-        TVOSOPTIONS=""
+        if [ "$MACOS" = "yes" ]; then
+            CUSTOMOSOPTIONS="--disable-fontconfig --disable-bghudappkit --disable-twolame --disable-microdns --disable-SDL --disable-SDL_image --disable-cddb --disable-bluray"
+        else
+            CUSTOMOSOPTIONS=""
+        fi
     fi
 
     if [ "${TARGET}" = "x86_64-apple-darwin14" ];then
@@ -392,19 +414,48 @@ buildLibVLC() {
         BUILD="--build=x86_64-apple-darwin14"
     fi
 
-    # The following symbols do not exist on the minimal iOS version (7.0), so they are disabled
-    # here. This allows compilation also with newer iOS SDKs
-    # Added symbols between 7.x and 10.x
-    export ac_cv_func_basename_r=no
-    export ac_cv_func_clock_getres=no
-    export ac_cv_func_clock_gettime=no
-    export ac_cv_func_clock_settime=no
-    export ac_cv_func_dirname_r=no
-    export ac_cv_func_getentropy=no
-    export ac_cv_func_mkostemp=no
-    export ac_cv_func_mkostemps=no
-    export ac_cv_func_open_memstream=no
-    export ac_cv_func_futimens=no
+    if [ "$MACOS" = "yes" ]; then
+        # The following symbols do not exist on the minimal macOS version (10.7), so they are disabled
+        # here. This allows compilation also with newer macOS SDKs.
+        # Added symbols in 10.13
+        export ac_cv_func_open_wmemstream=no
+        export ac_cv_func_fmemopen=no
+        export ac_cv_func_open_memstream=no
+        export ac_cv_func_futimens=no
+        export ac_cv_func_utimensat=no
+
+        # Added symbols between 10.11 and 10.12
+        export ac_cv_func_basename_r=no
+        export ac_cv_func_clock_getres=no
+        export ac_cv_func_clock_gettime=no
+        export ac_cv_func_clock_settime=no
+        export ac_cv_func_dirname_r=no
+        export ac_cv_func_getentropy=no
+        export ac_cv_func_mkostemp=no
+        export ac_cv_func_mkostemps=no
+
+        # Added symbols between 10.7 and 10.11
+        export ac_cv_func_ffsll=no
+        export ac_cv_func_flsll=no
+        export ac_cv_func_fdopendir=no
+        export ac_cv_func_openat=no
+        export ac_cv_func_fstatat=no
+        export ac_cv_func_readlinkat=no
+    else
+        # The following symbols do not exist on the minimal iOS version (7.0), so they are disabled
+        # here. This allows compilation also with newer iOS SDKs
+        # Added symbols between 7.x and 10.x
+        export ac_cv_func_basename_r=no
+        export ac_cv_func_clock_getres=no
+        export ac_cv_func_clock_gettime=no
+        export ac_cv_func_clock_settime=no
+        export ac_cv_func_dirname_r=no
+        export ac_cv_func_getentropy=no
+        export ac_cv_func_mkostemp=no
+        export ac_cv_func_mkostemps=no
+        export ac_cv_func_open_memstream=no
+        export ac_cv_func_futimens=no
+    fi
 
     export USE_FFMPEG=1
     ../bootstrap ${BUILD} --host=${TARGET} --prefix=${VLCROOT}/contrib/${OSSTYLE}-${TARGET}-${ARCH} --disable-gpl \
@@ -448,7 +499,11 @@ buildLibVLC() {
         --enable-vpx \
         --enable-libdsm \
         --enable-libplacebo \
-        ${TVOSOPTIONS} \
+        --disable-sparkle \
+        --disable-growl \
+        --disable-breakpad \
+        --disable-ncurses \
+        ${CUSTOMOSOPTIONS} \
         --enable-taglib > ${out}
 
     echo "EXTRA_CFLAGS += ${EXTRA_CFLAGS}" >> config.mak
@@ -543,6 +598,7 @@ buildLibVLC() {
         --enable-freetype \
         --enable-taglib \
         --disable-mmx \
+        --disable-sparkle \
         --disable-addonmanagermodules \
         --disable-mad > ${out}
     fi
@@ -670,12 +726,14 @@ buildMobileKit() {
 
     if [ "$SKIPLIBVLCCOMPILATION" != "yes" ]; then
         if [ "$TVOS" = "yes" ]; then
-            export BUILDFORTVOS="yes"
             info "Building libvlc for tvOS"
         else
-            info "Building libvlc for iOS"
+            if [ "$MACOS" = "yes" ]; then
+                info "Building libvlc for macOS"
+            else
+                info "Building libvlc for iOS"
+            fi
         fi
-        export BUILDFORIOS="yes"
 
         export AR=`xcrun -f ar`
         export RANLIB=`xcrun -f ranlib`
@@ -692,18 +750,22 @@ buildMobileKit() {
         if [ "$FARCH" = "all" ];then
             if [ "$TVOS" = "yes" ]; then
                 if [ "$PLATFORM" = "iphonesimulator" ]; then
-                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "x86_64" $TVOS $SDK_VERSION "Simulator"
+                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "x86_64" $TVOS $MACOS $SDK_VERSION "Simulator"
                 else
-                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "aarch64" $TVOS $SDK_VERSION "OS"
+                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "aarch64" $TVOS $MACOS $SDK_VERSION "OS"
                 fi
             else
-                if [ "$PLATFORM" = "iphonesimulator" ]; then
-                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "i386" $TVOS $SDK_VERSION "Simulator"
-                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "x86_64" $TVOS $SDK_VERSION "Simulator"
+                if [ "$MACOS" = "yes" ]; then
+                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "x86_64" $TVOS $MACOS $SDK_VERSION "OS"
                 else
-                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "armv7" $TVOS $SDK_VERSION "OS"
-                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "armv7s" $TVOS $SDK_VERSION "OS"
-                    buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "aarch64" $TVOS $SDK_VERSION "OS"
+                    if [ "$PLATFORM" = "iphonesimulator" ]; then
+                        buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "i386" $TVOS $MACOS $SDK_VERSION "Simulator"
+                        buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "x86_64" $TVOS $MACOS $SDK_VERSION "Simulator"
+                    else
+                        buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "armv7" $TVOS $MACOS $SDK_VERSION "OS"
+                        buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "armv7s" $TVOS $MACOS $SDK_VERSION "OS"
+                        buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE "aarch64" $TVOS $MACOS $SDK_VERSION "OS"
+                    fi
                 fi
             fi
         else
@@ -724,7 +786,7 @@ buildMobileKit() {
                 fi
             fi
             if [ ! -z "$buildPlatform" ];then
-                buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE $FARCH $TVOS $SDK_VERSION $buildPlatform
+                buildLibVLC $VERBOSE $DEBUG $SCARY $BITCODE $FARCH $TVOS $MACOS $SDK_VERSION $buildPlatform
             fi
         fi
     fi
@@ -799,13 +861,24 @@ build_universal_static_lib() {
     touch $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.h
     touch $PROJECT_DIR/Resources/MobileVLCKit/vlc-plugins-$OSSTYLE.xcconfig
 
-    spushd libvlc/vlc
-    rm -rf install-$OSSTYLE
-    mkdir install-$OSSTYLE
-    mkdir install-$OSSTYLE/core
-    mkdir install-$OSSTYLE/contrib
-    mkdir install-$OSSTYLE/plugins
-    spopd # vlc
+    if [ "$OSSTYLE" != "MacOSX" ]; then
+        spushd libvlc/vlc
+        rm -rf install-$OSSTYLE
+        mkdir install-$OSSTYLE
+        mkdir install-$OSSTYLE/core
+        mkdir install-$OSSTYLE/contrib
+        mkdir install-$OSSTYLE/plugins
+        spopd # vlc
+    else
+        spushd libvlc/vlc/install-$OSSTYLE
+        rm -rf core
+        rm -rf contrib
+        rm -rf plugins
+        ln -s x86_64/lib core
+        ln -s x86_64/contribs/lib contrib
+        ln -s x86_64/lib/vlc/plugins plugins
+        spopd # vlc
+    fi
 
     VLCMODULES=""
     VLCNEONMODULES=""
@@ -879,18 +952,25 @@ build_universal_static_lib() {
         spopd # vlc-install-"$OSSTYLE"Simulator
     fi
 
-    spushd libvlc/vlc
+    if [ "$OSSTYLE" = "MacOSX" ]; then
+        if [ -d libvlc/vlc/install-"$OSSTYLE" ];then
+            spushd libvlc/vlc/install-"$OSSTYLE"
+            echo `pwd`
+            echo "macOS: $arch"
+            spushd $arch/lib/vlc/plugins
+            for i in `ls *.a`
+            do
+                VLCMODULES="$i $VLCMODULES"
+            done
+            spopd # $actual_arch/lib/vlc/plugins
 
-    # lipo all the vlc libraries and its plugins
-    doVLCLipo "" "libvlc.a" "no" $OSSTYLE
-    doVLCLipo "" "libvlccore.a" "no" $OSSTYLE
-    doVLCLipo "vlc/" "libcompat.a" "no" $OSSTYLE
-    for i in $VLCMODULES
-    do
-        doVLCLipo "vlc/plugins/" $i "yes" $OSSTYLE
-    done
+            spopd # vlc-install-"$OSSTYLE"
+        fi
+    fi
 
-    # lipo contrib libraries
+    spushd libvlc/vlc
+
+    # collect contrib libraries
     spushd contrib/$OSSTYLE-$arch-apple-darwin14-$arch/lib
     for i in `ls *.a`
     do
@@ -898,25 +978,37 @@ build_universal_static_lib() {
     done
     spopd # contrib/$OSSTYLE-$arch-apple-darwin14-$arch/lib
 
-    for i in $CONTRIBLIBS
-    do
-        doContribLipo $i $OSSTYLE
-    done
-
-    if [ "$OSSTYLE" != "AppleTV" ]; then
-        # lipo the remaining NEON plugins
-        DEVICEARCHS=""
-        for i in armv7 armv7s; do
-            local iarch="`get_arch $i`"
-            if [ "$FARCH" == "all" -o "$FARCH" = "$iarch" ];then
-                DEVICEARCHS="$DEVICEARCHS $iarch"
-            fi
-        done
-        SIMULATORARCHS=""
-        for i in $VLCNEONMODULES
+    # lipo all the vlc libraries and its plugins
+    if [ "$OSSTYLE" != "MacOSX" ]; then
+        doVLCLipo "" "libvlc.a" "no" $OSSTYLE
+        doVLCLipo "" "libvlccore.a" "no" $OSSTYLE
+        doVLCLipo "vlc/" "libcompat.a" "no" $OSSTYLE
+        for i in $VLCMODULES
         do
             doVLCLipo "vlc/plugins/" $i "yes" $OSSTYLE
         done
+
+        # lipo contrib libraries
+        for i in $CONTRIBLIBS
+        do
+            doContribLipo $i $OSSTYLE
+        done
+
+        if [ "$OSSTYLE" != "AppleTV" ]; then
+            # lipo the remaining NEON plugins
+            DEVICEARCHS=""
+            for i in armv7 armv7s; do
+                local iarch="`get_arch $i`"
+                if [ "$FARCH" == "all" -o "$FARCH" = "$iarch" ];then
+                    DEVICEARCHS="$DEVICEARCHS $iarch"
+                fi
+            done
+            SIMULATORARCHS=""
+            for i in $VLCNEONMODULES
+            do
+                doVLCLipo "vlc/plugins/" $i "yes" $OSSTYLE
+            done
+        fi
     fi
 
     # create module list
@@ -970,10 +1062,14 @@ build_universal_static_lib() {
     spopd # vlc
 }
 
-if [ "$TVOS" != "yes" ]; then
-    build_universal_static_lib "iPhone"
-else
+if [ "$TVOS" = "yes" ]; then
     build_universal_static_lib "AppleTV"
+else
+    if [ "$MACOS" = "yes" ]; then
+        build_universal_static_lib "MacOSX"
+    else
+        build_universal_static_lib "iPhone"
+    fi
 fi
 
 info "all done"