MacOSCompile
This is an howto to compile VLC media player on Mac OS X, focused on VLC 1.2 and newer.
Contents
- 1 Pre-requisites
- 2 Get the source code
- 3 Build VLC with a single command
- 4 Build steps
- 5 What's wrong: troubleshooting
Pre-requisites
Apple Software
- You need at least MacOSX 10.5. 10.6, Snow Leopard is strongly recommended, though.
- Developer Tools from Apple from http://developer.apple.com/technology/xcode.html
Both Xcode3 and Xcode4 should be fine.
GCC 4.2 on Xcode 4.2
If you are on Xcode 4.2 with no previous Xcode installation, you probably NEED gcc-4.2 that isn't installed anymore.
Please install it from OSX-GCC installer.
$ gcc-4.2 --version
Git
You need to get Git to clone VLC.
You can use homebrew as:
$ brew install git
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
SDK selection and 32/64 bits
SDK selection
If you want to use the 10.6 SDK (your VLC will only run on 10.6 and more recent computers):
$ export OSX_VERSION=10.6
You can do the same for 10.5, but please check that you have MacOSX10.5.sdk installed in /Developer/SDKs/ . If you are using Xcode 4.2, you can install the 10.5 sdk with the .dmg from Xcode3.
32/64bits selection
The instructions below will build a 64 bits binary using 10.6 (Leopard) SDK. This is reflected by using host and build variables x86_64-apple-darwin10.
This "triplet" is ARCHITECTURE-apple-SYSTEM.
ARCHITECTURE
x86_64
represents Intel 64bits.i686
represents Intel 32bits.powerpc
represents PowerPC 32bits.
SDK SYSTEM
darwin9
represents MacOSX 10.5.darwin10
represents MacOSX 10.6.
So to make a PowerPC build, you would use powerpc-apple-darwin9. So to make a intel32 build for 10.5+, you would use i686-apple-darwin9. So to make a intel64 build for 10.6+, you would use x86_64-apple-darwin10.
Prepare 3rd party libraries
Before compiling VLC, you need lots of other libraries. Here is how to get them:
$ cd contrib $ mkdir -p osx && cd osx $ ../bootstrap --host=x86_64-apple-darwin10 --build=x86_64-apple-darwin10
Prebuilt libraries (recommended)
If you want to download a prebuilt package of all the needed libraries.
$ make prebuilt
And then skip to bootstrap section of this page.
Build your own libraries (not for the faint-hearted)
If you want to build from source a package in the contribs:
$ make -j4 .gettext $ export PATH=$PWD/../x86_64-apple-darwin10/bin:$PATH
Then:
$ make -j4
If you had no errors, the 3rd party libraries (contrib) are built correctly and you can proceed to the next step.
Go Back
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 64 bits binary:
$ ../extras/package/macosx/configure.sh --enable-debug --host=x86_64-apple-darwin10 --build=x86_64-apple-darwin10
Build VLC
Just do:
$ make -j4
and wait...
Package VLC Application for Mac
If you want to share the application with another user or another computer:
$ make VLC.app
If you want a disk-image:
$ make package-macosx
Respectively make package-macosx-plugin
for the Safari/Mozilla plugin.
What's wrong: troubleshooting
Xcode path
Starting with Leopard, Xcode may be installed to a custom location on the administrator's choice. While this is non-problematic for ordinary Xcode projects, VLC needs a little help. You have to place extra symbolic links in /Developer pointing to your custom location for these folders:
usr, Headers, Private, SDKs, Tools, Makefiles
You can easily create these links by executing the following command for each folder (whereas theFolder is one of these six):
ln -s /full/path/to/Developer/theFolder /Developer/theFolder
Xcode version
Please make sure that you are using the latest Xcode3 or the latest version of Xcode4 to compile VLC
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
QTsound compilation on X.5
MacOS X.5.SDK is broken - 2 options exist:
Option 1:
- Download the MacOS10.6.sdk and get QTCaptureDecompressedAudioOutput.h from /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/QTKit.framework/Headers/ and move it to /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/QTKit.framework/Headers/
- Edit /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/QTKit.framework/Headers/QTKit.h and add the
#import <QTKit/QTCaptureDecompressedAudioOutput.h> where needed.
Option 2:
- Configure the VLC build to explicitly use the MacOS10.6.sdk by adding the following flag:
--with-macosx-sdk=/Developer/SDKs/MacOSX10.6.sdk
Cross-Compilation to PPC from X.6 intel
If you want to compile VLC for PPC, based on a X.6 intel, you need to tweak a few things since Apple broke it.
This is VERY advanced stuff!
Pre-requisites
Be sure to:
- have X.6.8
- Xcode 4.2 installed in the normal /Developers location
- Xcode 3 installed in /Xcode3 location
- MacOS X.6 and X.5 SDK installed in /Developers/SDKs/ , as explained above (SDK selection).
GNU AS
Using this out of the box will not work because AS for ppc is broken on the default setup. Here is how to fix it:
cd /usr/libexec/as sudo mkdir ppc cd ppc sudo ln -sf /Xcode3/usr/bin/as as