aboutsummaryrefslogtreecommitdiff
path: root/README.osx
diff options
context:
space:
mode:
authorAlTheKiller <AlTheKiller@svn>2009-09-23 01:49:50 +0000
committerAlTheKiller <AlTheKiller@svn>2009-09-23 01:49:50 +0000
commit45285e8a9300cd754a760560640b75b09f98035e (patch)
treead9f093885ad5c98e9dd4156674e7691c22ed0a2 /README.osx
step 3/4: Move linuxport to trunk. How'd I get roped into this?
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@23097 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
Diffstat (limited to 'README.osx')
-rw-r--r--README.osx290
1 files changed, 290 insertions, 0 deletions
diff --git a/README.osx b/README.osx
new file mode 100644
index 0000000000..02a0d95f9d
--- /dev/null
+++ b/README.osx
@@ -0,0 +1,290 @@
+TOC
+1. Introduction
+2. Getting the source code
+3. Install required libs
+ 3.1. Install Xcode
+ 3.2. Install MacPorts 1.7
+4. How to compile and run
+ 4.1 Using XCode
+ 4.2 Using Command line
+5. Packaging
+
+-----------------------------------------------------------------------------
+1. Introduction
+-----------------------------------------------------------------------------
+
+This is a platform port of XBMC for the Apple OSX operating system. Both 10.5
+and 10.4 Intel development platforms are supported. The current build system
+is Xcode 2.5 or Xcode 3.1.2 There are two ways to build XBMC for Mac.
+1) command-line or
+2) Xcode.
+
+Generally, Xcode is the easiest as it presents the build system in a GUI environment.
+The command-line build is still under development.
+
+XBMC for Mac is composed of a main binary with numerous dynamic libraries and
+codecs that support a multitude of music and video formats.
+
+NOTE TO NEW OS X USERS: All lines that are prefixed with the '$' character are
+commands that need to be typed into a Terminal window. Note that the '$'
+character itself should NOT be typed as part of the command.
+
+
+-----------------------------------------------------------------------------
+2. Getting the source code
+-----------------------------------------------------------------------------
+
+ $ cd $HOME
+ $ svn checkout https://xbmc.svn.sourceforge.net/svnroot/xbmc/branches/linuxport/XBMC
+
+-----------------------------------------------------------------------------
+3.0 Install XCODE
+-----------------------------------------------------------------------------
+Install latest Xcode. You can download it from Apple's site after registration at
+(http://developer.apple.com/tools/download). You also need to install the 10.4
+sdk. If using Xcode 3.x, you MUST use Xcode 3.1.2 so update your existing version
+if you are running a previous Xcode 3.x version. Xcode 3.x only runs on 10.5.
+
+
+-----------------------------------------------------------------------------
+3.1 Install MacPorts 1.7
+-----------------------------------------------------------------------------
+
+These build instructions depend on MacPorts 1.7. If you have another version
+of MacPorts installed, it's best to remove it and install the 1.7 version.
+To remove a previous install of MacPorts, enter the following from a terminal
+windows:
+
+ $ sudo rm -rf \
+ /opt/local \
+ /etc/manpaths.d/macports \
+ /etc/paths.d/macports \
+ /Applications/DarwinPorts \
+ /Applications/MacPorts \
+ /Library/LaunchDaemons/org.macports.* \
+ /Library/Receipts/DarwinPorts*.pkg \
+ /Library/Receipts/MacPorts*.pkg \
+ /Library/StartupItems/DarwinPortsStartup \
+ /Library/Tcl/darwinports1.0 \
+ /Library/Tcl/macports1.0
+
+Install MacPorts 1.7 (http://www.macports.org/). If you are going to run
+under the same OSX version as you build under, just install the required port
+packages without the extra flags. No modifications of MacPorts is required.
+That means skip 1), 2), 3) and 4) below and don't add "+universal" or
+"macosx_deployment_target=10.4" when installing the ports.
+
+If you want to build a cross-compiled version that can run under
+10.5/10.4/AppleTV, then change MacPorts's behavior to always build universal
+against 10.4sdk using the following instructions.
+
+ 1)
+ $ sudo nano /opt/local/etc/macports/macports.conf
+ a) change "universal_target 10.5" to "universal_target 10.4"
+
+ b) change "universal_sysroot /Developer/SDKs/MacOSX10.5.sdk" to
+ "universal_sysroot /Developer/SDKs/MacOSX10.4u.sdk"
+
+ c) change "universal_archs ppc i386"
+ to reflect the arch you are building by removing the unused arch.
+
+ 2) These are needed to build openssl (used by samba3 and mysql5) against 10.4sdk
+ $ sudo ln -s /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/dylib1.o /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/dylib1.10.5.o
+ $ sudo ln -s /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.10.5.o
+
+ 3) samba3 does not have a +universal variant so we force it to build
+libsmbclient in a compatible manner
+
+ $ sudo nano /opt/local/var/macports/sources/rsync.macports.org/release/ports/net/samba3/Portfile
+
+ add the following before "configure.cflags-append "-fno-common";
+
+ configure.ldflags-append "-mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
+
+ change "--enable-cups" to "--disable-cups".
+
+ 4) mysql5 thinks we are cross-compiling and appends the cross-compile name to bin/my** apps.
+
+ $ sudo nano /opt/local/var/macports/sources/rsync.macports.org/release/ports/databases/mysql5/Portfile
+
+ scroll down to the post-destroot section and comment out the following
+ three lines like below;
+
+ # Symlink mysql binaries into bin directory, with ${major_version} appended to the name
+ #foreach f [glob -tails -directory ${destroot}${bindir} my*] {
+ # ln -sf ${bindir}/${f} ${destroot}${prefix}/bin/${f}${major_version}
+ #}
+
+
+Then install the following port packages (order is very important):
+
+ $ sudo port install pcre +universal
+ $ sudo port install expat +universal
+ $ sudo port install libiconv +universal
+ $ sudo port install gettext +universal
+ $ sudo port install libtool yasm cmake gmake pkgconfig
+
+ $ sudo port install lzo +universal
+ $ sudo port install lzo2 +universal
+ $ sudo port install bzip2 +universal
+ $ sudo port install fontconfig +universal
+ $ sudo port install boost +universal
+
+ $ sudo port install jpeg +universal
+ $ sudo port install tiff +universal
+ $ sudo port install libpng +universal
+ $ sudo port install libogg +universal
+ $ sudo port install libvorbis +universal
+ $ sudo port install libmad macosx_deployment_target=10.4
+ $ sudo port install fribidi +universal
+ $ sudo port install libmms +universal
+
+ $ sudo port install glew +universal
+ $ sudo port install libcdio +universal
+ $ sudo port install openssl +universal
+ $ sudo port install samba3 macosx_deployment_target=10.4
+ $ sudo port install mysql5 +universal
+ $ sudo port install sqlite3 +universal
+ $ sudo port install libsamplerate +universal
+
+ $ sudo port install libsdl +no_x11 +universal
+ $ sudo port install smpeg +universal
+ $ sudo port install libsdl_mixer +universal
+ $ sudo port install libsdl_image +universal
+
+If you understand the following two lines, you can run it to automate
+the installation of the ports in the above order:
+
+ sudo bash
+ cat README.osx | perl -ne 'print `port install $1` if /^ \$ sudo port install (.*)$/;'
+
+Finally, fix the mysql package default install location with this symlink:
+
+ $ sudo ln -s /opt/local/include/mysql5/mysql/ /opt/local/include/mysql
+
+-----------------------------------------------------------------------------
+4. How to compile
+-----------------------------------------------------------------------------
+Both Xcode and Terminal compilation require that build environment be setup
+first. This is a simple step and involves the following:
+
+ $ cd $HOME/XBMC
+ $ ./bootstrap
+ $ ./configure
+ $ make clean
+ $ make xcode_depends
+
+The configure operation will setup the build environment for codecs and
+internal libraries that are used by XBMC. This step is required for both Xcode
+and command-line building. The "make clean" ensures that there areno stale
+binaries from svn that might cause problems The last step will pre-build
+the majority of the codecs and libs:
+
+
+The configure operation will default to building "debug". To build "release"
+codecs and libraries for Xcode, do the configure step with "--disable-debug"
+but remember that Xcode will need to be also built "Release":
+
+ $ ./configure --disable-debug
+
+-----------------------------------------------------------------------------
+4.1 Using Xcode
+-----------------------------------------------------------------------------
+Start XCode and open the XBMC project (XBMC.xcodeproj) located in $HOME/XBMC.
+For development, XBMC is run from the $HOME/XBMC directory and needs to have
+the XBMC_HOME environment variable set to know where that directory is located.
+To set XBMC_HOME environment variable:
+
+Menu -> Project -> Edit Active Executable "XBMC", click "Arguments" tab and
+add "XBMC_HOME" as an enviroment variable. Set the value to the path to the
+XBMC root folder. For example, "/Users/bigdog/Documents/XBMC"
+
+There are two build targets "XBMC" and "XBMC.app" with debug and release
+settings. The "XBMC" target is used for rapid build and debug cycles while
+the "XBMC.app" target is used to build a self contained OSX application.
+
+Set the build target to "XBMC" or "XBMC.app", then build. The build process
+will take a long time when builting the first time. You can see the progress
+in "Build Results". There are a large number of static and dynamic libaries
+that will need to be built. Once these are built, subsequent builds will be
+faster.
+
+After the build, you can ether run XBMC for Mac from Xcode or run it from
+the command-line. If you run it from the command-line, make sure your set
+the XBMC_HOME environment variable (export XBMC_HOME=$HOME/XBMC). Then, to
+run the debug version:
+
+$ ./build/Debug/XBMC
+
+Or the release version:
+
+$ ./build/Release/XBMC
+
+You can also build via Xcode from the command-line using the following:
+
+$ xcodebuild -configuration Release -target "XBMC.app" -project XBMC.xcodeproj
+
+You can specify "Release" instead of "Debug" as a configuration.
+
+-----------------------------------------------------------------------------
+4.2 Using Terminal (command-line) (this is a work in progress and might fail)
+-----------------------------------------------------------------------------
+There are two methods, a) make/Xcode and b) make (which might fail as it's under
+construction).
+
+If you want to build a cross-compiled version that can run under 10.5/10.4/AppleTV,
+then you'll need to follow the additional steps listed in $HOME/XBMC/tools/XBMCTex/README.osx
+before running xcodebuild from the command-line.
+
+ a)
+ $ cd $HOME/XBMC
+ $ export XBMC_HOME=`pwd`
+ $ make xcode_depends
+ $ xcodebuild -sdk macosx10.4 -project XBMC.xcodeproj -target XBMC.app -configuration Release build
+
+ b)
+ $ cd $HOME/XBMC
+ $ export XBMC_HOME=`pwd`
+ $ make xbmc
+ $ ./xbmc.bin
+
+-----------------------------------------------------------------------------
+5. Packaging
+-----------------------------------------------------------------------------
+This section describes how to package XBMC in a disk image for
+distribution.
+
+ 1. Create 2 directories "extras/user" and "extras/system" in the root of
+ the source tree.
+
+ 1.1. "extras/user" - anything found in this directory will be
+ copied to the user's XBMC directory (~/Library/Application
+ Support/XBMC) on first run. Examples:
+
+ extras/user/scripts/XBMC Lyrics
+ extras/user/plugins/music/iTunes
+
+ 1.2. "extras/system" - anything found in this directory will be
+ copied to the XBMC application bundle at build time
+ (XBMC.app/Contents/Resources/XBMC/). Examples:
+
+ extras/system/skin/MediaStream
+ extras/system/skin/My Skin
+
+
+ 2. After performing step 1, build XBMC.app from XCode so that the
+ application bundle is correctly updated.
+
+ 3. Go to tools/PackageMaker and run dmgmaker.pl as follows:
+
+ $ cd tools/PackageMaker
+ $ ./dmgmaker.pl ../../build/Release/XBMC.app
+
+ 4. If dmgmaker.pl completed successfully, a disk image will be
+ present in the "dist" subdirectory:
+
+ $ ls dist
+ XBMC.dmg
+
+Remember to unmount/eject XBMC.dmg before attempting to recreate it,
+otherwise dmgmaker.pl will fail.