Commit 018fb259 authored by Felix Paul Kühne's avatar Felix Paul Kühne

MVK: completely re-write the way we create static libraries

This removes the aggregation target from the xcodeproj, always compiles both for simulator and device and will solve linking issues in client apps

further, this prepares compiling MVK as a dynamic library
parent 80087669
......@@ -6,20 +6,6 @@
objectVersion = 46;
objects = {
/* Begin PBXAggregateTarget section */
7A5ECAF911DE917B00F66AF3 /* Aggregate static plugins */ = {
isa = PBXAggregateTarget;
buildConfigurationList = 7A5ECB1011DE919F00F66AF3 /* Build configuration list for PBXAggregateTarget "Aggregate static plugins" */;
buildPhases = (
7A5ECAF811DE917B00F66AF3 /* Aggregate static plugins script */,
);
dependencies = (
);
name = "Aggregate static plugins";
productName = "Aggregate static plugins";
};
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
6360B0E211E7F0C000EAD790 /* VLCMediaDiscoverer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6360B0E111E7F0C000EAD790 /* VLCMediaDiscoverer.m */; };
6360B10611E7F27300EAD790 /* VLCMediaDiscoverer.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = 6360B0E311E7F0D300EAD790 /* VLCMediaDiscoverer.h */; };
......@@ -44,16 +30,6 @@
AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
CCD5C82E15947E6B00AED565 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 7A5ECAF911DE917B00F66AF3;
remoteInfo = "Aggregate static plugins";
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
7A5ECB6211DE961B00F66AF3 /* Copy Headers */ = {
isa = PBXCopyFilesBuildPhase;
......@@ -97,12 +73,11 @@
7A5ECAD911DE8FAB00F66AF3 /* VLCAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCAudio.h; path = Headers/Public/VLCAudio.h; sourceTree = "<group>"; };
7A5ECAE411DE8FEF00F66AF3 /* VLCLibVLCBridging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCLibVLCBridging.h; path = Headers/Internal/VLCLibVLCBridging.h; sourceTree = "<group>"; };
7A5ECAE511DE8FEF00F66AF3 /* VLCEventManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCEventManager.h; path = Headers/Internal/VLCEventManager.h; sourceTree = "<group>"; };
7A5ECB3311DE948C00F66AF3 /* MobileVLCKit.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = MobileVLCKit.xcconfig; path = MobileVLCKit/MobileVLCKit.xcconfig; sourceTree = "<group>"; };
7A5ECB3411DE94D600F66AF3 /* vlc-plugins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "vlc-plugins.h"; path = "MobileVLCKit/vlc-plugins.h"; sourceTree = "<group>"; };
7A5ECB9D11DE975700F66AF3 /* MobileVLCKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MobileVLCKit.h; path = Headers/Public/MobileVLCKit.h; sourceTree = "<group>"; };
7A5ECBAC11DE987400F66AF3 /* AggregateStaticPlugins.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = AggregateStaticPlugins.sh; path = MobileVLCKit/AggregateStaticPlugins.sh; sourceTree = "<group>"; };
7D5F8009185B72EB00C2CD75 /* VLCMediaListPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCMediaListPlayer.m; path = Sources/VLCMediaListPlayer.m; sourceTree = "<group>"; };
7D5F800B185B730F00C2CD75 /* VLCMediaListPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCMediaListPlayer.h; path = Headers/Public/VLCMediaListPlayer.h; sourceTree = "<group>"; };
7D8938951B500042008F2B14 /* vlc-plugins.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "vlc-plugins.xcconfig"; path = "MobileVLCKit/vlc-plugins.xcconfig"; 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; };
......@@ -168,8 +143,7 @@
32C88DFF0371C24200C91783 /* Other Sources */ = {
isa = PBXGroup;
children = (
7A5ECBAC11DE987400F66AF3 /* AggregateStaticPlugins.sh */,
7A5ECB3311DE948C00F66AF3 /* MobileVLCKit.xcconfig */,
7D8938951B500042008F2B14 /* vlc-plugins.xcconfig */,
AA747D9E0F9514B9006C5449 /* MobileVLCKit_Prefix.pch */,
);
name = "Other Sources";
......@@ -217,7 +191,6 @@
buildRules = (
);
dependencies = (
CCD5C82F15947E6B00AED565 /* PBXTargetDependency */,
);
name = MobileVLCKit;
productName = MobileVLCKit;
......@@ -245,28 +218,10 @@
projectRoot = "";
targets = (
D2AAC07D0554694100DB518D /* MobileVLCKit */,
7A5ECAF911DE917B00F66AF3 /* Aggregate static plugins */,
);
};
/* End PBXProject section */
/* Begin PBXShellScriptBuildPhase section */
7A5ECAF811DE917B00F66AF3 /* Aggregate static plugins script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Aggregate static plugins script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh ${SRCROOT}/MobileVLCKit/AggregateStaticPlugins.sh\nexit 0\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
D2AAC07B0554694100DB518D /* Sources */ = {
isa = PBXSourcesBuildPhase;
......@@ -287,45 +242,10 @@
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
CCD5C82F15947E6B00AED565 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 7A5ECAF911DE917B00F66AF3 /* Aggregate static plugins */;
targetProxy = CCD5C82E15947E6B00AED565 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
1DEB921F08733DC00010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7A5ECB3311DE948C00F66AF3 /* MobileVLCKit.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = (
"$(ARCHS_STANDARD_INCLUDING_64_BIT)",
armv7s,
);
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
COPY_PHASE_STRIP = NO;
DSTROOT = /tmp/MobileVLCKit.dst;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = MobileVLCKit_Prefix.pch;
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
HEADER_SEARCH_PATHS = "$(SRCROOT)/MobileVLCKit/ImportedSources/vlc/include";
INSTALL_PATH = /usr/local/lib;
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
PRODUCT_NAME = MobileVLCKit;
VLC_SRC_DIR = "$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc";
};
name = Debug;
};
1DEB922008733DC00010E9CD /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7A5ECB3311DE948C00F66AF3 /* MobileVLCKit.xcconfig */;
baseConfigurationReference = 7D8938951B500042008F2B14 /* vlc-plugins.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = (
......@@ -342,64 +262,64 @@
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
HEADER_SEARCH_PATHS = "$(SRCROOT)/MobileVLCKit/ImportedSources/vlc/include";
INSTALL_PATH = /usr/local/lib;
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
OTHER_LIBTOOLFLAGS = "$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/core/libcompat.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/core/libvlc.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/core/libvlccore.a $(VLC_PLUGINS_LDFLAGS) $(OTHER_CFLAGS)";
PRODUCT_NAME = MobileVLCKit;
VLC_SRC_DIR = "$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc";
};
name = Release;
};
1DEB922308733DC00010E9CD /* Debug */ = {
1DEB922408733DC00010E9CD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
OTHER_LDFLAGS = "-ObjC";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
};
name = Debug;
name = Release;
};
1DEB922408733DC00010E9CD /* Release */ = {
7D8938931B500013008F2B14 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 5.1;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
OTHER_LDFLAGS = "-ObjC";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
};
name = Release;
};
7A5ECAFA11DE917B00F66AF3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
PRODUCT_NAME = "Aggregate static plugins";
};
name = Debug;
};
7A5ECAFB11DE917B00F66AF3 /* Release */ = {
7D8938941B500013008F2B14 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7D8938951B500042008F2B14 /* vlc-plugins.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
PRODUCT_NAME = "Aggregate static plugins";
ZERO_LINK = NO;
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = (
"$(ARCHS_STANDARD_INCLUDING_64_BIT)",
armv7s,
);
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_OBJC_ARC = YES;
DSTROOT = /tmp/MobileVLCKit.dst;
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = MobileVLCKit_Prefix.pch;
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
HEADER_SEARCH_PATHS = "$(SRCROOT)/MobileVLCKit/ImportedSources/vlc/include";
INSTALL_PATH = /usr/local/lib;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
OTHER_LIBTOOLFLAGS = "$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/core/libcompat.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/core/libvlc.a $(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/core/libvlccore.a $(VLC_PLUGINS_LDFLAGS) $(OTHER_CFLAGS)";
PRODUCT_NAME = MobileVLCKit;
};
name = Release;
name = Debug;
};
/* End XCBuildConfiguration section */
......@@ -407,8 +327,8 @@
1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "MobileVLCKit" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB921F08733DC00010E9CD /* Debug */,
1DEB922008733DC00010E9CD /* Release */,
7D8938941B500013008F2B14 /* Debug */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
......@@ -416,17 +336,8 @@
1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "MobileVLCKit" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB922308733DC00010E9CD /* Debug */,
1DEB922408733DC00010E9CD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
7A5ECB1011DE919F00F66AF3 /* Build configuration list for PBXAggregateTarget "Aggregate static plugins" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7A5ECAFA11DE917B00F66AF3 /* Debug */,
7A5ECAFB11DE917B00F66AF3 /* Release */,
7D8938931B500013008F2B14 /* Debug */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
......
#!/bin/sh
# Pre-Compile.sh
# MobileVLC
#
# Copyright Pierre d'Herbemont
# License is the same as the COPYING file at root of the project
pushd `dirname $0` > /dev/null
PROJECT_DIR=`pwd`
popd > /dev/null
echo "PROJECT DIR = $PROJECT_DIR"
ARCH=$ARCHS
VLC_SRC_DIR="$PROJECT_DIR/ImportedSources/vlc"
if [ "$PLATFORM_NAME" = "iphoneos" ]; then
VLC_BUILD_DIR="$VLC_SRC_DIR/build-ios-OS/$CURRENT_ARCH"
VLC_INSTALL_DIR="$VLC_SRC_DIR/install-ios-OS/$CURRENT_ARCH"
else
VLC_BUILD_DIR="$VLC_SRC_DIR/build-ios-Simulator/$CURRENT_ARCH"
VLC_INSTALL_DIR="$VLC_SRC_DIR/install-ios-Simulator/$CURRENT_ARCH"
fi
VLC_CONTRIB_DIR="$VLC_INSTALL_DIR/contribs/"
LDFLAGS=""
echo "VLC_BUILD_DIR = $VLC_BUILD_DIR"
echo "VLC_INSTALL_DIR = $VLC_INSTALL_DIR"
echo "SRC DIR = $VLC_SRC_DIR"
echo "VLC_CONTRIB_DIR = $VLC_CONTRIB_DIR"
echo "=== Building for $ARCH ==="
echo "-"
echo "// This file is autogenerated by $(basename $0)\n\n" > $PROJECT_DIR/vlc-plugins.h
echo "// This file is autogenerated by $(basename $0)\n\n" > $PROJECT_DIR/vlc-plugins.xcconfig
VLC_MODULES=`ls $VLC_INSTALL_DIR/lib/vlc/plugins/lib*_plugin.a|tr \\\\n \ `
#echo $VLC_MODULES
BUILTINS="const void *vlc_static_modules[] = {\n"; \
LDFLAGS=""
DEFINITION=""
for file in $VLC_MODULES; do
name=`echo $file | sed 's/.*\/lib//' | sed 's/_plugin\.a//'`
symbol=`nm -g $file | grep _vlc_entry__|cut -d" " -f 3|sed 's/_vlc_entry/vlc_entry/'`
DEFINITION+="int $symbol (int (*)(void *, void *, int, ...), void *);\n";
BUILTINS+=" $symbol,\n"
LDFLAGS+="\$(VLC_INSTALL_DIR)/lib/vlc/plugins/lib${name}_plugin.a "
done;
BUILTINS="$BUILTINS NULL\n};\n"
echo -e "VLC_PLUGINS_LDFLAGS=$LDFLAGS" >> $PROJECT_DIR/vlc-plugins.xcconfig
echo -e "$DEFINITION\n$BUILTINS" >> $PROJECT_DIR/vlc-plugins.h
//
// vlc.xcconfig
// VLC
//
// Created by Pierre d'Herbemont on 6/26/10.
// Copyright 2010-2013 VLC Authors and VideoLAN. All rights reserved.
//
VLC_SRC_DIR=$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc
VLC_PLATFORM[sdk=iphonesimulator*]=Simulator
VLC_PLATFORM[sdk=iphoneos*]=OS
VLC_INSTALL_DIR=$(VLC_SRC_DIR)/install-ios-$(VLC_PLATFORM)/$(CURRENT_ARCH)
//OTHER_CFLAGS= -ObjC -all_load
#include "vlc-plugins.xcconfig"
VLC_CONTRIB_DIR=$VLC_INSTALL_DIR/contribs
ARCHIVE=$(VLC_CONTRIB_DIR)/lib/libarchive.a
AVCODEC=$(VLC_CONTRIB_DIR)/lib/libavutil.a ${VLC_CONTRIB_DIR}/lib/libavcodec.a $(VLC_CONTRIB_DIR)/lib/libavformat.a $(VLC_CONTRIB_DIR)/lib/libswscale.a $(VLC_CONTRIB_DIR)/lib/libgsm.a
DVBPSI=$(VLC_CONTRIB_DIR)/lib/libdvbpsi.a
FLAC=$(VLC_CONTRIB_DIR)/lib/libFLAC.a
FREETYPE=$(VLC_CONTRIB_DIR)/lib/libfreetype.a
FRIBIDI=$(VLC_CONTRIB_DIR)/lib/libfribidi.a
ASS=$(VLC_CONTRIB_DIR)/lib/libass.a
GCRYPT=$(VLC_CONTRIB_DIR)/lib/libgcrypt.a $(VLC_CONTRIB_DIR)/lib/libgpg-error.a
HARFBUZZ=$(VLC_CONTRIB_DIR)/lib/libharfbuzz.a
LIVE555=$(VLC_CONTRIB_DIR)/lib/libUsageEnvironment.a $(VLC_CONTRIB_DIR)/lib/libBasicUsageEnvironment.a $(VLC_CONTRIB_DIR)/lib/libgroupsock.a $(VLC_CONTRIB_DIR)/lib/libz.a $(VLC_CONTRIB_DIR)/lib/libliveMedia.a
MKV=$(VLC_CONTRIB_DIR)/lib/libebml.a $(VLC_CONTRIB_DIR)/lib/libmatroska.a
MODPLUG=$(VLC_CONTRIB_DIR)/lib/libmodplug.a
MP3=$(VLC_CONTRIB_DIR)/lib/libmpg123.a
OPUS=$(VLC_CONTRIB_DIR)/lib/libopus.a
OGG=$(VLC_CONTRIB_DIR)/lib/libogg.a $(VLC_CONTRIB_DIR)/lib/libtheora.a $(VLC_CONTRIB_DIR)/lib/libtheoradec.a $(VLC_CONTRIB_DIR)/lib/libtheoraenc.a $(VLC_CONTRIB_DIR)/lib/libvorbis.a $(VLC_CONTRIB_DIR)/lib/libvorbisenc.a $(VLC_CONTRIB_DIR)/lib/libvorbisfile.a
PICS=$(VLC_CONTRIB_DIR)/lib/libpng.a $(VLC_CONTRIB_DIR)/lib/libopenjpeg.a
SPEEX=$(VLC_CONTRIB_DIR)/lib/libspeex.a $(VLC_CONTRIB_DIR)/lib/libspeexdsp.a
TAGLIB=$(VLC_CONTRIB_DIR)/lib/libtag.a $(VLC_CONTRIB_DIR)/lib/libtag_c.a
VPX=$(VLC_CONTRIB_DIR)/lib/libvpx.a
XML=$(VLC_CONTRIB_DIR)/lib/libxml2.a
ZLIB=$(VLC_CONTRIB_DIR)/lib/libz.a
SSH=$(VLC_CONTRIB_DIR)/lib/libssh2.a
DSM=$(VLC_CONTRIB_DIR)/lib/libtasn1.a $(VLC_CONTRIB_DIR)/lib/libdsm.a
ZVBI=$(VLC_CONTRIB_DIR)/lib/libzvbi.a
OTHER_LIBTOOLFLAGS=$(ARCHIVE) $(ASS) $(AVCODEC) $(DVBPSI) $(FLAC) $(FRIBIDI) $(FREETYPE) $(GCRYPT) $(HARFBUZZ) $(LIVE555) $(MKV) $(MODPLUG) $(MP3) $(OGG) $(OPUS) $(PICS) $(SPEEX) $(TAGLIB) $(XML) $(VPX) $(SSH) $(DSM) $(ZLIB) $(ZVBI) $(VLC_INSTALL_DIR)/lib/vlc/libcompat.a $(VLC_INSTALL_DIR)/lib/libvlc.a $(VLC_INSTALL_DIR)/lib/libvlccore.a $(VLC_PLUGINS_LDFLAGS) $(OTHER_CFLAGS)
#!/bin/sh
# Copyright (C) Pierre d'Herbemont, 2010
# Copyright (C) Felix Paul Kühne, 2012-2013
# Copyright (C) Felix Paul Kühne, 2012-2015
set -e
BUILD_DEVICE=yes
BUILD_SIMULATOR=no
BUILD_SIMULATOR=yes
BUILD_FRAMEWORK=no
SDK=`xcrun --sdk iphoneos --show-sdk-version`
SDK_MIN=7.0
......@@ -31,6 +31,7 @@ OPTIONS
-n Skip script steps requiring network interaction
-l Skip libvlc compilation
-w Build a limited stack of non-scary libraries only
-y Build universal static libraries
EOF
}
......@@ -196,9 +197,6 @@ buildMobileKit() {
spopd # MobileVLCKit/ImportedSources
buildxcodeproj MobileVLCKit "Aggregate static plugins"
buildxcodeproj MobileVLCKit "MobileVLCKit"
info "Build for $PLATFORM completed"
}
......@@ -208,6 +206,192 @@ fi
if [ "$BUILD_SIMULATOR" != "no" ]; then
buildMobileKit iphonesimulator
fi
DEVICEARCHS=""
SIMULATORARCHS=""
doVLCLipo() {
FILEPATH="$1"
FILE="$2"
PLUGIN="$3"
files=""
info "...$FILEPATH$FILE"
for i in $DEVICEARCHS
do
files="install-ios-OS/$i/lib/$FILEPATH$FILE $files"
done
for i in $SIMULATORARCHS
do
files="install-ios-Simulator/$i/lib/$FILEPATH$FILE $files"
done
if [ "$PLUGIN" != "no" ]; then
lipo $files -create -output install-ios/plugins/$FILE
else
lipo $files -create -output install-ios/core/$FILE
fi
}
doContribLipo() {
LIBNAME="$1"
files=""
info "...$LIBNAME"
for i in $DEVICEARCHS
do
if [ "$i" != "arm64" ]; then
files="contrib/$i-apple-darwin11-$i/lib/$LIBNAME $files"
else
files="contrib/aarch64-apple-darwin11-aarch64/lib/$LIBNAME $files"
fi
done
for i in $SIMULATORARCHS
do
files="contrib/$i-apple-darwin11-$i/lib/$LIBNAME $files"
done
lipo $files -create -output install-ios/contrib/$LIBNAME
}
get_symbol()
{
echo "$1" | grep vlc_entry_$2|cut -d" " -f 3|sed 's/_vlc/vlc/'
}
info "building universal static libs"
PROJECT_DIR=`pwd`
# remove old module list
rm -f $PROJECT_DIR/MobileVLCKit/vlc-plugins.h
rm -f $PROJECT_DIR/MobileVLCKit/vlc-plugins.xcconfig
spushd MobileVLCKit/ImportedSources/vlc
rm -rf install-ios
mkdir install-ios
mkdir install-ios/core
mkdir install-ios/contrib
mkdir install-ios/plugins
spopd # vlc
spushd MobileVLCKit/ImportedSources/vlc/install-ios-OS
for i in `ls .`
do
DEVICEARCHS="$DEVICEARCHS $i"
done
spopd # vlc-install-ios-OS
spushd MobileVLCKit/ImportedSources/vlc/install-ios-Simulator
for i in `ls .`
do
SIMULATORARCHS="$SIMULATORARCHS $i"
done
spopd # vlc-install-ios-Simulator
# arm64 got the lowest number of modules
VLCMODULES=""
spushd MobileVLCKit/ImportedSources/vlc/install-ios-OS/arm64/lib/vlc/plugins
for i in `ls *.a`
do
VLCMODULES="$i $VLCMODULES"
done
spopd # vlc/install-ios-OS/arm64/lib/vlc/plugins
# collect ARMv7/s specific neon modules
VLCNEONMODULES=""
spushd MobileVLCKit/ImportedSources/vlc/install-ios-OS/armv7/lib/vlc/plugins
for i in `ls *.a | grep neon`
do
VLCNEONMODULES="$i $VLCNEONMODULES"
done
spopd # vlc/install-ios-OS/armv7/lib/vlc/plugins
spushd MobileVLCKit/ImportedSources/vlc
# lipo all the vlc libraries and its plugins
doVLCLipo "" "libvlc.a" "no"
doVLCLipo "" "libvlccore.a" "no"
doVLCLipo "vlc/" "libcompat.a" "no"
for i in $VLCMODULES
do
doVLCLipo "vlc/plugins/" $i "yes"
done
# lipo contrib libraries
CONTRIBLIBS=""
spushd contrib/armv7-apple-darwin11-armv7/lib
for i in `ls *.a`
do
CONTRIBLIBS="$i $CONTRIBLIBS"
done
spopd # contrib/armv7-apple-darwin11-armv7/lib
for i in $CONTRIBLIBS
do
doContribLipo $i
done
# lipo the remaining NEON plugins
DEVICEARCHS="armv7 armv7s"
SIMULATORARCHS=""
for i in $VLCNEONMODULES
do
doVLCLipo "vlc/plugins/" $i "yes"
done
# create module list
info "creating module list"
echo "// This file is autogenerated by $(basename $0)\n\n" > $PROJECT_DIR/MobileVLCKit/vlc-plugins.h
echo "// This file is autogenerated by $(basename $0)\n\n" > $PROJECT_DIR/MobileVLCKit/vlc-plugins.xcconfig
# arm64 got the lowest number of modules
BUILTINS="const void *vlc_static_modules[] = {\n"; \
LDFLAGS=""
DEFINITIONS=""
# add contrib libraries to LDFLAGS
for file in $CONTRIBLIBS
do
LDFLAGS+="\$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/contrib/$file "
done
for file in $VLCMODULES
do
symbols=$(nm -g -arch armv7 install-ios/plugins/$file)
entryname=$(get_symbol "$symbols" _)
DEFINITIONS+="int $entryname (int (*)(void *, void *, int, ...), void *);\n";
BUILTINS+=" $entryname,\n"
LDFLAGS+="\$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/plugins/$file "
info "...$entryname"
done;
BUILTINS+="#ifdef __arm__\n"
DEFINITIONS+="#ifdef __arm__\n"
for file in $VLCNEONMODULES
do
symbols=$(nm -g -arch armv7 install-ios/plugins/$file)
entryname=$(get_symbol "$symbols" _)
DEFINITIONS+="int $entryname (int (*)(void *, void *, int, ...), void *);\n";
BUILTINS+=" $entryname,\n"
LDFLAGS+="\$(PROJECT_DIR)/MobileVLCKit/ImportedSources/vlc/install-ios/plugins/$file "
info "...$entryname"
done;
BUILTINS+="#endif\n"
DEFINITIONS+="#endif\n"
BUILTINS="$BUILTINS NULL\n};\n"
echo "$DEFINITIONS\n$BUILTINS" > $PROJECT_DIR/MobileVLCKit/vlc-plugins.h
echo "VLC_PLUGINS_LDFLAGS=$LDFLAGS" > $PROJECT_DIR/MobileVLCKit/vlc-plugins.xcconfig
spopd # vlc
info "all done"
if [ "$BUILD_FRAMEWORK" != "no" ]; then
info "Building MobileVLCKit.framework"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment