MacOSCompile

From VideoLAN Wiki
Revision as of 14:04, 24 February 2016 by EPirat (talk | contribs) (Clarify things about which SDK will be used or not used and add some commands to make compiling with different SDKs easier)
Jump to navigation Jump to search

This is an howto to compile VLC media player on Mac OS X, focused on VLC 3.0 and newer.

Pre-requisites

Apple Software

  • You need at least MacOSX 10.8. Any later version is strongly recommended, though.
  • Developer Tools from Apple from http://developer.apple.com/technology/xcode.html
    You need at least Xcode 5.
    Note that we need the optional command line tools, which can be installed through the preferences dialog or through the OS X dialog offering their installation.

Xcode select

You might need to run xcode select to point to your xcode developer directory.

xcrun clang

If this outputs 'Error: No developer directory...', then use xcode-select to select the developer directory within the Xcode package.

something like:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer  

Configure the environment

VLC needs to be compiled using Apple's clang compiler in its latest version. To use this compiler, you need to export the respective variables. In a Bourne Shell, type this (if Xcode is installed to its default location; bash is the default shell on OS X):

export CC="xcrun clang"
export CXX="xcrun clang++"
export OBJC="xcrun clang"

If you are using a C-Shell, you need to use the setenv command of course.

Get the source code

 git clone git://git.videolan.org/vlc.git

Build VLC with a single command

Setup a build folder:

cd vlc && mkdir build && cd build

And run the build:

../extras/package/macosx/build.sh

Wait and you are finished

You can see more options for this build (change arch or sdk):

../extras/package/macosx/build.sh -h

Build steps

Now, if you prefer, you can read the following detailed information on how the build internally works:

Additional development tools

You need development tools, notably all the autotools, to build VLC correctly.

Here is how:

cd vlc/extras/tools
./bootstrap && make
cd ../..

Important: set the new PATH.

export PATH=$PWD/extras/tools/build/bin:$PATH

Prepare 3rd party libraries

Before compiling VLC, you need lots of other libraries. Here is how to get them:

First, set the correct SDK version for the 3rd party libraries, usually your current OS X Version:

export OSX_VERSION=10.7
cd contrib
mkdir -p contrib-osx && cd contrib-osx
../bootstrap --host=x86_64-apple-darwin11 --build=x86_64-apple-darwin11

Prebuilt libraries (recommended)

If you want to download a prebuilt package of all the needed libraries.

make prebuilt

Now you can just skip to the Update PATH section.

Build your own libraries (not for the faint-hearted)

If you want to build from source a package in the contribs:

make -j4 .gettext

Then:

make -j4

If you had no errors, the 3rd party libraries (contrib) are built correctly and you can proceed to the next step.

Update PATH

Now we need to add them to our path, so they can be found:

export PATH=$PWD/../x86_64-apple-darwin11/bin:$PATH

and go back to the VLC source directory:

cd ../..

Bootstrap VLC

This will create the configure script:

./bootstrap

Configure the VLC build

Create a build folder:

mkdir -p build && cd build

To list the different options of configure:

../extras/package/macosx/configure.sh --help

To build a binary with the previously installed x86_64-apple-darwin11 contrib:

../extras/package/macosx/configure.sh --enable-debug --host=x86_64-apple-darwin11 --build=x86_64-apple-darwin11

By default it will not use the installed SDK, like Xcode does, but use System Root. To build against the latest installed SDK, you can use:

--with-macosx-sdk=`xcrun --show-sdk-path`

If you want to use a different SDK, you can list all installed SDKs with xcodebuild -showsdks and to get the path for it, you can use the following command xcodebuild -version <SDK Flag from before> Path.
For example: xcodebuild -version -sdk macosx10.11 Path

Build VLC

Just do:

make -j4

and wait...

if you want to avoid recompiling VLC.app every time during development use

make VLC-dev.app

Package VLC Application for Mac

If you want a disk-image:

make package-macosx

Sign VLC Application for Mac

If you want to sign your application with a certificate, for example for Gatekeeper, you need to run:

extras/package/macosx/codesign.sh -i "certificate name"

What's wrong: troubleshooting

3rd party packagers and PATH

Pay careful attention to remove any reference to 3rd party package managersfrom your environment. This is important to avoid conflicts between your package manager (homebrew, fink, macports...) and the contrib package manager we use to build our contrib.

It shouldn't be necessary, but it can happen.

git must still be accessible though!

unset PKG_CONFIG_PATH
unset PKG_CONFIG_LIBDIR
export PATH=$PWD/build/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin