diff options
author | AlTheKiller <AlTheKiller@svn> | 2009-09-23 01:49:50 +0000 |
---|---|---|
committer | AlTheKiller <AlTheKiller@svn> | 2009-09-23 01:49:50 +0000 |
commit | 45285e8a9300cd754a760560640b75b09f98035e (patch) | |
tree | ad9f093885ad5c98e9dd4156674e7691c22ed0a2 /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.osx | 290 |
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. |