Przeglądaj źródła

Add a dynamic library target for tvOS

Felix Paul Kühne 9 lat temu
rodzic
commit
f8dfa922be

+ 22 - 7
DynamicMobileVLCKit/DynamicMobileVLCKit.h

@@ -1,10 +1,25 @@
-//
-//  DynamicMobileVLCKit.h
-//  DynamicMobileVLCKit
-//
-//  Created by Felix Paul Kühne on 10/07/15.
-//
-//
+/*****************************************************************************
+ * DynamicMobileVLCKit.h: dynamic library umbrella header
+ *****************************************************************************
+ * Copyright (C) 2016 VideoLabs SAS
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne # videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
 
 #import <UIKit/UIKit.h>
 

+ 52 - 0
DynamicTVVLCKit/DynamicTVVLCKit.h

@@ -0,0 +1,52 @@
+/*****************************************************************************
+ * DynamicTVVLCKit.h: dynamic library umbrella header
+ *****************************************************************************
+ * Copyright (C) 2016 VideoLabs SAS
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne # videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <UIKit/UIKit.h>
+
+//! Project version number for DynamicTVVLCKit.
+FOUNDATION_EXPORT double DynamicTVVLCKitVersionNumber;
+
+//! Project version string for DynamicTVVLCKit.
+FOUNDATION_EXPORT const unsigned char DynamicTVVLCKitVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <DynamicTVVLCKit/PublicHeader.h>
+
+#import <DynamicTVVLCKit/VLCAudio.h>
+#import <DynamicTVVLCKit/VLCLibrary.h>
+#import <DynamicTVVLCKit/VLCMedia.h>
+#import <DynamicTVVLCKit/VLCMediaDiscoverer.h>
+#import <DynamicTVVLCKit/VLCMediaList.h>
+#import <DynamicTVVLCKit/VLCMediaPlayer.h>
+#import <DynamicTVVLCKit/VLCMediaListPlayer.h>
+#import <DynamicTVVLCKit/VLCMediaThumbnailer.h>
+#import <DynamicTVVLCKit/VLCTime.h>
+
+@class VLCMedia;
+@class VLCMediaLibrary;
+@class VLCMediaList;
+@class VLCTime;
+@class VLCVideoView;
+@class VLCAudio;
+@class VLCMediaThumbnailer;
+@class VLCMediaListPlayer;
+@class VLCMediaPlayer;

+ 26 - 0
DynamicTVVLCKit/Info.plist

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>$(CURRENT_PROJECT_VERSION)</string>
+	<key>NSPrincipalClass</key>
+	<string></string>
+</dict>
+</plist>

+ 26 - 0
Headers/Internal/VLCHelperCode.h

@@ -0,0 +1,26 @@
+/*****************************************************************************
+ * VLCHelperCode.h: generic helper code
+ *****************************************************************************
+ * Copyright (C) 2016 VideoLabs SAS
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne # videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Foundation/Foundation.h>
+
+NSString *toNSStr(const char *str);

+ 480 - 0
MobileVLCKit.xcodeproj/project.pbxproj

@@ -87,6 +87,57 @@
 		7D8939721B500F38008F2B14 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8938EA1B50098C008F2B14 /* CFNetwork.framework */; };
 		7D8939731B500F38008F2B14 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D8938E81B500984008F2B14 /* QuartzCore.framework */; };
 		7D8939741B500F38008F2B14 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; };
+		7DB683821C995D39000C70BE /* DynamicTVVLCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DB683811C995D39000C70BE /* DynamicTVVLCKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683871C995D76000C70BE /* VLCAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B49C5FB1BC3D7870052D40C /* VLCAudio.m */; };
+		7DB683881C995D76000C70BE /* VLCEventManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A5ECAC411DE8F7300F66AF3 /* VLCEventManager.m */; };
+		7DB683891C995D76000C70BE /* VLCLibrary.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A5ECAC511DE8F7300F66AF3 /* VLCLibrary.m */; };
+		7DB6838A1C995D76000C70BE /* VLCMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A5ECAC611DE8F7300F66AF3 /* VLCMedia.m */; };
+		7DB6838B1C995D76000C70BE /* VLCMediaList.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A5ECAC711DE8F7300F66AF3 /* VLCMediaList.m */; };
+		7DB6838C1C995D76000C70BE /* VLCMediaPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A5ECAC811DE8F7300F66AF3 /* VLCMediaPlayer.m */; };
+		7DB6838D1C995D76000C70BE /* VLCMediaListPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D5F8009185B72EB00C2CD75 /* VLCMediaListPlayer.m */; };
+		7DB6838E1C995D76000C70BE /* VLCMediaThumbnailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 636E975711EBC67A002FE8A9 /* VLCMediaThumbnailer.m */; };
+		7DB6838F1C995D76000C70BE /* VLCMediaDiscoverer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6360B0E111E7F0C000EAD790 /* VLCMediaDiscoverer.m */; };
+		7DB683901C995D76000C70BE /* VLCTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A5ECAC911DE8F7300F66AF3 /* VLCTime.m */; };
+		7DB683911C995D76000C70BE /* VLCDialogProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D803EB51C8F21D200864A9C /* VLCDialogProvider.m */; };
+		7DB683921C995D76000C70BE /* VLCCustomDialogProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D34F5501C909DDF008A39F0 /* VLCCustomDialogProvider.m */; };
+		7DB683931C995D76000C70BE /* VLCEmbeddedDialogProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D803EBE1C8F2AB400864A9C /* VLCEmbeddedDialogProvider.m */; };
+		7DB683951C995D91000C70BE /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683941C995D91000C70BE /* AVFoundation.framework */; };
+		7DB683971C995D99000C70BE /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683961C995D99000C70BE /* libiconv.tbd */; };
+		7DB683991C995DA3000C70BE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683981C995DA3000C70BE /* CoreFoundation.framework */; };
+		7DB6839B1C995DAC000C70BE /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB6839A1C995DAC000C70BE /* libc++.tbd */; };
+		7DB6839D1C995DB4000C70BE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB6839C1C995DB4000C70BE /* OpenGLES.framework */; };
+		7DB6839F1C995DBB000C70BE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB6839E1C995DBB000C70BE /* UIKit.framework */; };
+		7DB683A11C995DC2000C70BE /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683A01C995DC2000C70BE /* Security.framework */; };
+		7DB683A31C995DC9000C70BE /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683A21C995DC9000C70BE /* CoreMedia.framework */; };
+		7DB683A51C995DCF000C70BE /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683A41C995DCF000C70BE /* CoreVideo.framework */; };
+		7DB683A71C995DD9000C70BE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683A61C995DD9000C70BE /* AudioToolbox.framework */; };
+		7DB683A91C995DDF000C70BE /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683A81C995DDF000C70BE /* CoreText.framework */; };
+		7DB683AB1C995DE4000C70BE /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683AA1C995DE4000C70BE /* CFNetwork.framework */; };
+		7DB683AD1C995DEE000C70BE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683AC1C995DEE000C70BE /* CoreGraphics.framework */; };
+		7DB683AF1C995DF6000C70BE /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683AE1C995DF6000C70BE /* QuartzCore.framework */; };
+		7DB683B11C995DFA000C70BE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683B01C995DFA000C70BE /* Foundation.framework */; };
+		7DB683B21C995E1D000C70BE /* VLCAudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B49C5FD1BC3D7960052D40C /* VLCAudio.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683B31C995E1D000C70BE /* VLCLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAD411DE8FAB00F66AF3 /* VLCLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683B41C995E1D000C70BE /* VLCMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAD511DE8FAB00F66AF3 /* VLCMedia.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683B51C995E1D000C70BE /* VLCMediaThumbnailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 636E979011EBC96D002FE8A9 /* VLCMediaThumbnailer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683B61C995E1D000C70BE /* VLCMediaList.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAD611DE8FAB00F66AF3 /* VLCMediaList.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683B71C995E1D000C70BE /* VLCMediaPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAD711DE8FAB00F66AF3 /* VLCMediaPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683B81C995E1D000C70BE /* VLCMediaListPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D5F800B185B730F00C2CD75 /* VLCMediaListPlayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683B91C995E1D000C70BE /* VLCMediaDiscoverer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6360B0E311E7F0D300EAD790 /* VLCMediaDiscoverer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683BA1C995E1D000C70BE /* VLCDialogProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D803EB71C8F21EF00864A9C /* VLCDialogProvider.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683BB1C995E1D000C70BE /* VLCTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAD811DE8FAB00F66AF3 /* VLCTime.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		7DB683BC1C995E34000C70BE /* VLCLibVLCBridging.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAE411DE8FEF00F66AF3 /* VLCLibVLCBridging.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		7DB683BD1C995E34000C70BE /* VLCEventManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAE511DE8FEF00F66AF3 /* VLCEventManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		7DB683BE1C995E34000C70BE /* VLCEmbeddedDialogProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D803EC31C8F2AEF00864A9C /* VLCEmbeddedDialogProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		7DB683BF1C995E34000C70BE /* VLCiOSLegacyDialogProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D803EC41C8F2AEF00864A9C /* VLCiOSLegacyDialogProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		7DB683C01C995E34000C70BE /* VLCCustomDialogProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D34F5551C909DF6008A39F0 /* VLCCustomDialogProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		7DB683CF1C995EA3000C70BE /* libStaticTVLibvlc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DB683C61C995E9A000C70BE /* libStaticTVLibvlc.a */; };
+		7DB683D01C995EBA000C70BE /* StaticLibVLC.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D8939521B500DBC008F2B14 /* StaticLibVLC.m */; };
+		7DB683D61C996187000C70BE /* VLCHelperCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DB683D31C996187000C70BE /* VLCHelperCode.m */; };
+		7DB683D71C996187000C70BE /* VLCHelperCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DB683D31C996187000C70BE /* VLCHelperCode.m */; };
+		7DB683D81C996187000C70BE /* VLCHelperCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DB683D31C996187000C70BE /* VLCHelperCode.m */; };
+		7DB683DA1C9961BA000C70BE /* VLCHelperCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DB683D91C9961BA000C70BE /* VLCHelperCode.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		7DB683DB1C9961BA000C70BE /* VLCHelperCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DB683D91C9961BA000C70BE /* VLCHelperCode.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7DDC020B1B501ECF0078FC84 /* VLCLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAD411DE8FAB00F66AF3 /* VLCLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		7DDC020C1B501ECF0078FC84 /* VLCMedia.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5ECAD511DE8FAB00F66AF3 /* VLCMedia.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		7DDC020D1B501ECF0078FC84 /* VLCMediaThumbnailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 636E979011EBC96D002FE8A9 /* VLCMediaThumbnailer.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -149,6 +200,15 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		7DB683C41C995E9A000C70BE /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "include/$(PRODUCT_NAME)";
+			dstSubfolderSpec = 16;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
@@ -210,6 +270,27 @@
 		7D89392B1B500D1C008F2B14 /* DynamicMobileVLCKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DynamicMobileVLCKit.h; sourceTree = "<group>"; };
 		7D89394E1B500DBC008F2B14 /* libStaticLibVLC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libStaticLibVLC.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		7D8939521B500DBC008F2B14 /* StaticLibVLC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StaticLibVLC.m; sourceTree = "<group>"; };
+		7DB6837F1C995D39000C70BE /* DynamicTVVLCKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DynamicTVVLCKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		7DB683811C995D39000C70BE /* DynamicTVVLCKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DynamicTVVLCKit.h; sourceTree = "<group>"; };
+		7DB683831C995D39000C70BE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		7DB683941C995D91000C70BE /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683961C995D99000C70BE /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/usr/lib/libiconv.tbd; sourceTree = DEVELOPER_DIR; };
+		7DB683981C995DA3000C70BE /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; };
+		7DB6839A1C995DAC000C70BE /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/usr/lib/libc++.tbd"; sourceTree = DEVELOPER_DIR; };
+		7DB6839C1C995DB4000C70BE /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; };
+		7DB6839E1C995DBB000C70BE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683A01C995DC2000C70BE /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683A21C995DC9000C70BE /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/CoreMedia.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683A41C995DCF000C70BE /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/CoreVideo.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683A61C995DD9000C70BE /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683A81C995DDF000C70BE /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683AA1C995DE4000C70BE /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683AC1C995DEE000C70BE /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683AE1C995DF6000C70BE /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683B01C995DFA000C70BE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
+		7DB683C61C995E9A000C70BE /* libStaticTVLibvlc.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libStaticTVLibvlc.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		7DB683D31C996187000C70BE /* VLCHelperCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCHelperCode.m; path = Sources/VLCHelperCode.m; sourceTree = "<group>"; };
+		7DB683D91C9961BA000C70BE /* VLCHelperCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCHelperCode.h; path = Headers/Internal/VLCHelperCode.h; sourceTree = "<group>"; };
 		AA747D9E0F9514B9006C5449 /* MobileVLCKit_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MobileVLCKit_Prefix.pch; sourceTree = SOURCE_ROOT; };
 		AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		D2AAC07E0554694100DB518D /* libMobileVLCKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMobileVLCKit.a; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -255,6 +336,36 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		7DB6837B1C995D39000C70BE /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DB683CF1C995EA3000C70BE /* libStaticTVLibvlc.a in Frameworks */,
+				7DB683B11C995DFA000C70BE /* Foundation.framework in Frameworks */,
+				7DB683AF1C995DF6000C70BE /* QuartzCore.framework in Frameworks */,
+				7DB683AD1C995DEE000C70BE /* CoreGraphics.framework in Frameworks */,
+				7DB683AB1C995DE4000C70BE /* CFNetwork.framework in Frameworks */,
+				7DB683A91C995DDF000C70BE /* CoreText.framework in Frameworks */,
+				7DB683A71C995DD9000C70BE /* AudioToolbox.framework in Frameworks */,
+				7DB683A51C995DCF000C70BE /* CoreVideo.framework in Frameworks */,
+				7DB683A31C995DC9000C70BE /* CoreMedia.framework in Frameworks */,
+				7DB683A11C995DC2000C70BE /* Security.framework in Frameworks */,
+				7DB6839F1C995DBB000C70BE /* UIKit.framework in Frameworks */,
+				7DB6839D1C995DB4000C70BE /* OpenGLES.framework in Frameworks */,
+				7DB6839B1C995DAC000C70BE /* libc++.tbd in Frameworks */,
+				7DB683991C995DA3000C70BE /* CoreFoundation.framework in Frameworks */,
+				7DB683971C995D99000C70BE /* libiconv.tbd in Frameworks */,
+				7DB683951C995D91000C70BE /* AVFoundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7DB683C31C995E9A000C70BE /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		D2AAC07C0554694100DB518D /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -273,6 +384,8 @@
 				7D8939271B500D1C008F2B14 /* DynamicMobileVLCKit.framework */,
 				7D89394E1B500DBC008F2B14 /* libStaticLibVLC.a */,
 				7D1329591BA304D900BE647E /* libTVVLCKit.a */,
+				7DB6837F1C995D39000C70BE /* DynamicTVVLCKit.framework */,
+				7DB683C61C995E9A000C70BE /* libStaticTVLibvlc.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -287,6 +400,7 @@
 				7D8939281B500D1C008F2B14 /* DynamicMobileVLCKit */,
 				7D89394F1B500DBC008F2B14 /* StaticLibVLC */,
 				7D13295A1BA304D900BE647E /* TVVLCKit */,
+				7DB683801C995D39000C70BE /* DynamicTVVLCKit */,
 				0867D69AFE84028FC02AAC07 /* Frameworks */,
 				034768DFFF38A50411DB9C8B /* Products */,
 			);
@@ -296,6 +410,21 @@
 		0867D69AFE84028FC02AAC07 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				7DB683B01C995DFA000C70BE /* Foundation.framework */,
+				7DB683AE1C995DF6000C70BE /* QuartzCore.framework */,
+				7DB683AC1C995DEE000C70BE /* CoreGraphics.framework */,
+				7DB683AA1C995DE4000C70BE /* CFNetwork.framework */,
+				7DB683A81C995DDF000C70BE /* CoreText.framework */,
+				7DB683A61C995DD9000C70BE /* AudioToolbox.framework */,
+				7DB683A41C995DCF000C70BE /* CoreVideo.framework */,
+				7DB683A21C995DC9000C70BE /* CoreMedia.framework */,
+				7DB683A01C995DC2000C70BE /* Security.framework */,
+				7DB6839E1C995DBB000C70BE /* UIKit.framework */,
+				7DB6839C1C995DB4000C70BE /* OpenGLES.framework */,
+				7DB6839A1C995DAC000C70BE /* libc++.tbd */,
+				7DB683981C995DA3000C70BE /* CoreFoundation.framework */,
+				7DB683961C995D99000C70BE /* libiconv.tbd */,
+				7DB683941C995D91000C70BE /* AVFoundation.framework */,
 				7D6C891F1C0CA81F00321894 /* AVFoundation.framework */,
 				7D1329731BA305A200BE647E /* Foundation.framework */,
 				7D8939031B5009E2008F2B14 /* libiconv.dylib */,
@@ -331,6 +460,7 @@
 				6360B0E111E7F0C000EAD790 /* VLCMediaDiscoverer.m */,
 				7A5ECAC911DE8F7300F66AF3 /* VLCTime.m */,
 				7D34F5571C909E13008A39F0 /* Dialogs */,
+				7DB683D31C996187000C70BE /* VLCHelperCode.m */,
 			);
 			name = Sources;
 			sourceTree = "<group>";
@@ -374,6 +504,7 @@
 				7D803EC31C8F2AEF00864A9C /* VLCEmbeddedDialogProvider.h */,
 				7D803EC41C8F2AEF00864A9C /* VLCiOSLegacyDialogProvider.h */,
 				7D34F5551C909DF6008A39F0 /* VLCCustomDialogProvider.h */,
+				7DB683D91C9961BA000C70BE /* VLCHelperCode.h */,
 			);
 			name = Internal;
 			sourceTree = "<group>";
@@ -438,6 +569,23 @@
 			path = StaticLibVLC;
 			sourceTree = "<group>";
 		};
+		7DB683801C995D39000C70BE /* DynamicTVVLCKit */ = {
+			isa = PBXGroup;
+			children = (
+				7DB683811C995D39000C70BE /* DynamicTVVLCKit.h */,
+				7DB683D11C9960E6000C70BE /* Supporting Files */,
+			);
+			path = DynamicTVVLCKit;
+			sourceTree = "<group>";
+		};
+		7DB683D11C9960E6000C70BE /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				7DB683831C995D39000C70BE /* Info.plist */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
@@ -455,10 +603,35 @@
 				7DDC02111B501ECF0078FC84 /* VLCMediaDiscoverer.h in Headers */,
 				7DDC02121B501ECF0078FC84 /* VLCTime.h in Headers */,
 				7DDC02151B501ED70078FC84 /* VLCLibVLCBridging.h in Headers */,
+				7DB683DA1C9961BA000C70BE /* VLCHelperCode.h in Headers */,
 				7DDC02161B501ED70078FC84 /* VLCEventManager.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		7DB6837C1C995D39000C70BE /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DB683821C995D39000C70BE /* DynamicTVVLCKit.h in Headers */,
+				7DB683B21C995E1D000C70BE /* VLCAudio.h in Headers */,
+				7DB683B31C995E1D000C70BE /* VLCLibrary.h in Headers */,
+				7DB683B41C995E1D000C70BE /* VLCMedia.h in Headers */,
+				7DB683B51C995E1D000C70BE /* VLCMediaThumbnailer.h in Headers */,
+				7DB683B61C995E1D000C70BE /* VLCMediaList.h in Headers */,
+				7DB683B71C995E1D000C70BE /* VLCMediaPlayer.h in Headers */,
+				7DB683B81C995E1D000C70BE /* VLCMediaListPlayer.h in Headers */,
+				7DB683B91C995E1D000C70BE /* VLCMediaDiscoverer.h in Headers */,
+				7DB683BA1C995E1D000C70BE /* VLCDialogProvider.h in Headers */,
+				7DB683BB1C995E1D000C70BE /* VLCTime.h in Headers */,
+				7DB683BC1C995E34000C70BE /* VLCLibVLCBridging.h in Headers */,
+				7DB683BD1C995E34000C70BE /* VLCEventManager.h in Headers */,
+				7DB683BE1C995E34000C70BE /* VLCEmbeddedDialogProvider.h in Headers */,
+				7DB683BF1C995E34000C70BE /* VLCiOSLegacyDialogProvider.h in Headers */,
+				7DB683DB1C9961BA000C70BE /* VLCHelperCode.h in Headers */,
+				7DB683C01C995E34000C70BE /* VLCCustomDialogProvider.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
@@ -514,6 +687,41 @@
 			productReference = 7D89394E1B500DBC008F2B14 /* libStaticLibVLC.a */;
 			productType = "com.apple.product-type.library.static";
 		};
+		7DB6837E1C995D39000C70BE /* DynamicTVVLCKit */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 7DB683861C995D39000C70BE /* Build configuration list for PBXNativeTarget "DynamicTVVLCKit" */;
+			buildPhases = (
+				7DB6837A1C995D39000C70BE /* Sources */,
+				7DB6837B1C995D39000C70BE /* Frameworks */,
+				7DB6837C1C995D39000C70BE /* Headers */,
+				7DB6837D1C995D39000C70BE /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = DynamicTVVLCKit;
+			productName = DynamicTVVLCKit;
+			productReference = 7DB6837F1C995D39000C70BE /* DynamicTVVLCKit.framework */;
+			productType = "com.apple.product-type.framework";
+		};
+		7DB683C51C995E9A000C70BE /* StaticTVLibvlc */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 7DB683CC1C995E9A000C70BE /* Build configuration list for PBXNativeTarget "StaticTVLibvlc" */;
+			buildPhases = (
+				7DB683C21C995E9A000C70BE /* Sources */,
+				7DB683C31C995E9A000C70BE /* Frameworks */,
+				7DB683C41C995E9A000C70BE /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = StaticTVLibvlc;
+			productName = StaticTVLibvlc;
+			productReference = 7DB683C61C995E9A000C70BE /* libStaticTVLibvlc.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 		D2AAC07D0554694100DB518D /* MobileVLCKit */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "MobileVLCKit" */;
@@ -548,6 +756,12 @@
 					7D89394D1B500DBC008F2B14 = {
 						CreatedOnToolsVersion = 6.4;
 					};
+					7DB6837E1C995D39000C70BE = {
+						CreatedOnToolsVersion = 7.3;
+					};
+					7DB683C51C995E9A000C70BE = {
+						CreatedOnToolsVersion = 7.3;
+					};
 				};
 			};
 			buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "MobileVLCKit" */;
@@ -566,6 +780,8 @@
 				7D8939261B500D1C008F2B14 /* DynamicMobileVLCKit */,
 				7D89394D1B500DBC008F2B14 /* StaticLibVLC */,
 				7D1329581BA304D900BE647E /* TVVLCKit */,
+				7DB6837E1C995D39000C70BE /* DynamicTVVLCKit */,
+				7DB683C51C995E9A000C70BE /* StaticTVLibvlc */,
 			);
 		};
 /* End PBXProject section */
@@ -578,6 +794,13 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		7DB6837D1C995D39000C70BE /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
@@ -611,6 +834,7 @@
 				7D803EC71C8F2AF900864A9C /* VLCiOSLegacyDialogProvider.m in Sources */,
 				7D8939411B500D50008F2B14 /* VLCLibrary.m in Sources */,
 				7D8939421B500D50008F2B14 /* VLCMedia.m in Sources */,
+				7DB683D71C996187000C70BE /* VLCHelperCode.m in Sources */,
 				7D8939431B500D50008F2B14 /* VLCMediaList.m in Sources */,
 				7D8939441B500D51008F2B14 /* VLCMediaPlayer.m in Sources */,
 				7D8939451B500D51008F2B14 /* VLCMediaListPlayer.m in Sources */,
@@ -629,6 +853,35 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		7DB6837A1C995D39000C70BE /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DB683871C995D76000C70BE /* VLCAudio.m in Sources */,
+				7DB683881C995D76000C70BE /* VLCEventManager.m in Sources */,
+				7DB683891C995D76000C70BE /* VLCLibrary.m in Sources */,
+				7DB6838A1C995D76000C70BE /* VLCMedia.m in Sources */,
+				7DB6838B1C995D76000C70BE /* VLCMediaList.m in Sources */,
+				7DB6838C1C995D76000C70BE /* VLCMediaPlayer.m in Sources */,
+				7DB683D81C996187000C70BE /* VLCHelperCode.m in Sources */,
+				7DB6838D1C995D76000C70BE /* VLCMediaListPlayer.m in Sources */,
+				7DB6838E1C995D76000C70BE /* VLCMediaThumbnailer.m in Sources */,
+				7DB6838F1C995D76000C70BE /* VLCMediaDiscoverer.m in Sources */,
+				7DB683901C995D76000C70BE /* VLCTime.m in Sources */,
+				7DB683911C995D76000C70BE /* VLCDialogProvider.m in Sources */,
+				7DB683921C995D76000C70BE /* VLCCustomDialogProvider.m in Sources */,
+				7DB683931C995D76000C70BE /* VLCEmbeddedDialogProvider.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7DB683C21C995E9A000C70BE /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				7DB683D01C995EBA000C70BE /* StaticLibVLC.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		D2AAC07B0554694100DB518D /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -644,6 +897,7 @@
 				7A5ECACF11DE8F7300F66AF3 /* VLCMediaPlayer.m in Sources */,
 				7A5ECAD011DE8F7300F66AF3 /* VLCTime.m in Sources */,
 				6360B0E211E7F0C000EAD790 /* VLCMediaDiscoverer.m in Sources */,
+				7DB683D61C996187000C70BE /* VLCHelperCode.m in Sources */,
 				7D34F5521C909DDF008A39F0 /* VLCCustomDialogProvider.m in Sources */,
 				4B49C5FC1BC3D7870052D40C /* VLCAudio.m in Sources */,
 				636E975811EBC67A002FE8A9 /* VLCMediaThumbnailer.m in Sources */,
@@ -1035,6 +1289,214 @@
 			};
 			name = Debug;
 		};
+		7DB683841C995D39000C70BE /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD)";
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				CURRENT_PROJECT_VERSION = 1;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				DEFINES_MODULE = YES;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				DYLIB_INSTALL_NAME_BASE = "@rpath";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_PREFIX_HEADER = MobileVLCKit_Prefix.pch;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/include",
+				);
+				INFOPLIST_FILE = DynamicTVVLCKit/Info.plist;
+				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = NO;
+				PRODUCT_BUNDLE_IDENTIFIER = org.videolan.DynamicTVVLCKit;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+				VERSIONING_SYSTEM = "apple-generic";
+				VERSION_INFO_PREFIX = "";
+			};
+			name = Release;
+		};
+		7DB683851C995D39000C70BE /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD)";
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				CURRENT_PROJECT_VERSION = 1;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				DEFINES_MODULE = YES;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				DYLIB_INSTALL_NAME_BASE = "@rpath";
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREFIX_HEADER = MobileVLCKit_Prefix.pch;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/include",
+				);
+				INFOPLIST_FILE = DynamicTVVLCKit/Info.plist;
+				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = org.videolan.DynamicTVVLCKit;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VERSIONING_SYSTEM = "apple-generic";
+				VERSION_INFO_PREFIX = "";
+			};
+			name = Debug;
+		};
+		7DB683CD1C995E9A000C70BE /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7D1329751BA305D600BE647E /* vlc-plugins-AppleTV.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD)";
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OTHER_LDFLAGS = "-ObjC";
+				OTHER_LIBTOOLFLAGS = "$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-AppleTV/core/libvlc.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-AppleTV/core/libvlccore.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-AppleTV/core/libcompat.a $(VLC_PLUGINS_LDFLAGS)";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		7DB683CE1C995E9A000C70BE /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 7D1329751BA305D600BE647E /* vlc-plugins-AppleTV.xcconfig */;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD)";
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				OTHER_LDFLAGS = "-ObjC";
+				OTHER_LIBTOOLFLAGS = "$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-AppleTV/core/libvlc.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-AppleTV/core/libvlccore.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios-AppleTV/core/libcompat.a $(VLC_PLUGINS_LDFLAGS)";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
@@ -1083,6 +1545,24 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		7DB683861C995D39000C70BE /* Build configuration list for PBXNativeTarget "DynamicTVVLCKit" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7DB683841C995D39000C70BE /* Release */,
+				7DB683851C995D39000C70BE /* Debug */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		7DB683CC1C995E9A000C70BE /* Build configuration list for PBXNativeTarget "StaticTVLibvlc" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7DB683CD1C995E9A000C70BE /* Release */,
+				7DB683CE1C995E9A000C70BE /* Debug */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 /* End XCConfigurationList section */
 	};
 	rootObject = 0867D690FE84028FC02AAC07 /* Project object */;

+ 1 - 5
MobileVLCKit_Prefix.pch

@@ -7,6 +7,7 @@
     #import <UIKit/UIKit.h>
 #endif
 #import <vlc/vlc.h>
+#import "VLCHelperCode.h"
 
 #ifndef NDEBUG
 #define VKLog(format, ...) NSLog(format, ## __VA_ARGS__)
@@ -14,11 +15,6 @@
 #define VKLog(format, ...)
 #endif
 
-
-NSString *toNSStr(const char *str) {
-    return str != NULL ? [NSString stringWithUTF8String:str] : @"";
-}
-
 #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[UIDevice currentDevice] systemVersion].floatValue >= [v floatValue])
 
 #define SYSTEM_RUNS_IOS8_OR_LATER SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")

+ 28 - 0
Sources/VLCHelperCode.m

@@ -0,0 +1,28 @@
+/*****************************************************************************
+ * VLCHelperCode.m: generic helper code
+ *****************************************************************************
+ * Copyright (C) 2016 VideoLabs SAS
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne # videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCHelperCode.h"
+
+NSString *toNSStr(const char *str) {
+    return str != NULL ? [NSString stringWithUTF8String:str] : @"";
+}

+ 22 - 7
StaticLibVLC/StaticLibVLC.m

@@ -1,10 +1,25 @@
-//
-//  StaticLibVLC.m
-//  StaticLibVLC
-//
-//  Created by Felix Paul Kühne on 10/07/15.
-//
-//
+/*****************************************************************************
+ * StaticLibVLC.m: I'm a hack. I live here to make stuff link to something
+ *****************************************************************************
+ * Copyright (C) 2015 VideoLabs SAS
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne # videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
 
 #import <Foundation/Foundation.h>