345 lines
15 KiB
Text
345 lines
15 KiB
Text
|
|
///////////////////////////////////////////////////////////////////////
|
|
// Caution: there are two separate, independent build systems:
|
|
// 'makepanda', and 'ppremake'. Use one or the other, do not attempt
|
|
// to use both. This file is part of the 'makepanda' system.
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
Panda3D Install --- using the 'makepanda' system.
|
|
|
|
NOTE: As the makepanda build system changes more frequently
|
|
than this document, some of the information is outdated.
|
|
|
|
MAKE SURE YOU HAVE ALL OF THE SOURCE CODE
|
|
|
|
The easiest way to download the source for panda is to download the
|
|
"source package" from the panda3d website. If you downloaded a file
|
|
labeled "source package", then you have everything you need. Skip to
|
|
the next section.
|
|
|
|
Alternately, it is possible to download the source in pieces. There
|
|
are three pieces:
|
|
|
|
1. Source code from Github.
|
|
2. Third-party tools (not strictly necessary for Unix)
|
|
|
|
You will need both to use makepanda. You can find the
|
|
pieces on the panda website. Look for the files labeled "Panda3D
|
|
source". You can also obtain the first piece
|
|
directly from the github:
|
|
|
|
Over https:
|
|
https://github.com/panda3d/panda3d.git
|
|
Over SSH:
|
|
git@github.com:panda3d/panda3d.git
|
|
|
|
Make sure you have both pieces. If you do, then your panda
|
|
directory will contain the following subdirectories:
|
|
|
|
direct - piece 1, source code from github
|
|
dmodels - piece 1, source code from github
|
|
doc - piece 1, source code from github
|
|
dtool - piece 1, source code from github
|
|
makepanda - piece 1, source code from github
|
|
models - piece 1, source code from github
|
|
panda - piece 1, source code from github
|
|
pandatool - piece 1, source code from github
|
|
ppremake - piece 1, source code from github
|
|
contrib - piece 1, source code from github
|
|
samples - piece 1, sample programs
|
|
thirdparty - piece 2, third party tools
|
|
|
|
|
|
If you have all of these, you're ready to go. If not, then you
|
|
must have missed a piece.
|
|
|
|
Linux/FreeBSD users may omit the "thirdparty" tree, but this means
|
|
they will need to have the thirdparty software installed on the system.
|
|
|
|
INVOKING MAKEPANDA
|
|
|
|
Makepanda is a script that builds panda, all the way through. To
|
|
invoke it under windows, change directory to the root of the panda
|
|
source tree and type this:
|
|
|
|
makepanda\makepanda.bat
|
|
|
|
To invoke it under Linux or OSX, change directory to the root of
|
|
the panda source tree and type this:
|
|
|
|
makepanda/makepanda.py
|
|
|
|
From this point forward, I will not be including the directory name or
|
|
the extension in my examples. I will simply assume that you know to
|
|
add the correct extension as demanded by your operating system.
|
|
|
|
|
|
BUILDING PANDA: QUICK START
|
|
|
|
The easy way to build panda is to type:
|
|
|
|
makepanda --everything
|
|
|
|
This will compile panda with all the features. It can take several
|
|
hours, depending on the speed of your machine.
|
|
|
|
You may wish to add the --verbose option to the makepanda
|
|
command to get more verbose output information. This is
|
|
especially useful when you run into a compiler error.
|
|
|
|
The resulting copy of panda will be found in a subdirectory 'built'
|
|
inside the source tree. (Given that you did not override this
|
|
with the --outputdir option)
|
|
|
|
|
|
INSTALLING PANDA
|
|
|
|
If you are using Windows, OSX or a Linux distribution that supports DEB or
|
|
RPM packages, the recommended way to install Panda3D is to run makepanda
|
|
with the --installer option and then install the resulting .exe, .deb, .rpm
|
|
or .dmg package. This is a safe solution that makes sure all the files are
|
|
installed in the correct places and all the paths are configured correctly.
|
|
More information can be found below.
|
|
|
|
Linux and FreeBSD users can install Panda3D manually, however, using the
|
|
following sequence of commands (execute as root):
|
|
|
|
python makepanda/installpanda.py --prefix /usr/local
|
|
ldconfig
|
|
|
|
|
|
MAKEPANDA COMMAND-LINE OPTIONS
|
|
|
|
The default invocation of makepanda is a good way to test panda on
|
|
your machine. However, it compiles several features that you probably
|
|
don't need. To disable the extra features, you need to specify
|
|
command-line options to makepanda. If you invoke:
|
|
|
|
makepanda --help
|
|
|
|
it will show you the available command-line options:
|
|
|
|
--help (print the help message you're reading now)
|
|
--verbose (print out more information)
|
|
--runtime (build a runtime build instead of an SDK build)
|
|
--installer (build an installer)
|
|
--optimize X (optimization level can be 1,2,3,4)
|
|
--version X (set the panda version number)
|
|
--lzma (use lzma compression when building Windows installer)
|
|
--distributor X (short string identifying the distributor of the build)
|
|
--outputdir X (use the specified directory instead of 'built')
|
|
--host URL (set the host url (runtime build only))
|
|
--threads N (use the multithreaded build system. see manual)
|
|
--osxtarget N (the OSX version number to build for (OSX only))
|
|
--universal (build universal binaries (OSX only))
|
|
--override "O=V" (override dtool_config/prc option value)
|
|
--static (builds libraries for static linking)
|
|
--target X (experimental cross-compilation (android only))
|
|
--arch X (target architecture for cross-compilation)
|
|
|
|
--use-python --no-python (enable/disable use of PYTHON)
|
|
--use-direct --no-direct (enable/disable use of DIRECT)
|
|
--use-gl --no-gl (enable/disable use of GL)
|
|
--use-gles --no-gles (enable/disable use of GLES)
|
|
--use-gles2 --no-gles2 (enable/disable use of GLES2)
|
|
--use-dx9 --no-dx9 (enable/disable use of DX9)
|
|
--use-tinydisplay --no-tinydisplay (enable/disable use of TINYDISPLAY)
|
|
--use-nvidiacg --no-nvidiacg (enable/disable use of NVIDIACG)
|
|
--use-egl --no-egl (enable/disable use of EGL)
|
|
--use-eigen --no-eigen (enable/disable use of EIGEN)
|
|
--use-openal --no-openal (enable/disable use of OPENAL)
|
|
--use-fmodex --no-fmodex (enable/disable use of FMODEX)
|
|
--use-vorbis --no-vorbis (enable/disable use of VORBIS)
|
|
--use-ffmpeg --no-ffmpeg (enable/disable use of FFMPEG)
|
|
--use-swscale --no-swscale (enable/disable use of SWSCALE)
|
|
--use-swresample --no-swresample (enable/disable use of SWRESAMPLE)
|
|
--use-ode --no-ode (enable/disable use of ODE)
|
|
--use-physx --no-physx (enable/disable use of PHYSX)
|
|
--use-bullet --no-bullet (enable/disable use of BULLET)
|
|
--use-pandaphysics --no-pandaphysics (enable/disable use of PANDAPHYSICS)
|
|
--use-speedtree --no-speedtree (enable/disable use of SPEEDTREE)
|
|
--use-zlib --no-zlib (enable/disable use of ZLIB)
|
|
--use-png --no-png (enable/disable use of PNG)
|
|
--use-jpeg --no-jpeg (enable/disable use of JPEG)
|
|
--use-tiff --no-tiff (enable/disable use of TIFF)
|
|
--use-squish --no-squish (enable/disable use of SQUISH)
|
|
--use-freetype --no-freetype (enable/disable use of FREETYPE)
|
|
--use-maya6 --no-maya6 (enable/disable use of MAYA6)
|
|
--use-maya65 --no-maya65 (enable/disable use of MAYA65)
|
|
--use-maya7 --no-maya7 (enable/disable use of MAYA7)
|
|
--use-maya8 --no-maya8 (enable/disable use of MAYA8)
|
|
--use-maya85 --no-maya85 (enable/disable use of MAYA85)
|
|
--use-maya2008 --no-maya2008 (enable/disable use of MAYA2008)
|
|
--use-maya2009 --no-maya2009 (enable/disable use of MAYA2009)
|
|
--use-maya2010 --no-maya2010 (enable/disable use of MAYA2010)
|
|
--use-maya2011 --no-maya2011 (enable/disable use of MAYA2011)
|
|
--use-maya2012 --no-maya2012 (enable/disable use of MAYA2012)
|
|
--use-maya2013 --no-maya2013 (enable/disable use of MAYA2013)
|
|
--use-maya20135 --no-maya20135 (enable/disable use of MAYA20135)
|
|
--use-maya2014 --no-maya2014 (enable/disable use of MAYA2014)
|
|
--use-maya2015 --no-maya2015 (enable/disable use of MAYA2015)
|
|
--use-max6 --no-max6 (enable/disable use of MAX6)
|
|
--use-max7 --no-max7 (enable/disable use of MAX7)
|
|
--use-max8 --no-max8 (enable/disable use of MAX8)
|
|
--use-max9 --no-max9 (enable/disable use of MAX9)
|
|
--use-max2009 --no-max2009 (enable/disable use of MAX2009)
|
|
--use-max2010 --no-max2010 (enable/disable use of MAX2010)
|
|
--use-max2011 --no-max2011 (enable/disable use of MAX2011)
|
|
--use-max2012 --no-max2012 (enable/disable use of MAX2012)
|
|
--use-max2013 --no-max2013 (enable/disable use of MAX2013)
|
|
--use-max2014 --no-max2014 (enable/disable use of MAX2014)
|
|
--use-fcollada --no-fcollada (enable/disable use of FCOLLADA)
|
|
--use-vrpn --no-vrpn (enable/disable use of VRPN)
|
|
--use-openssl --no-openssl (enable/disable use of OPENSSL)
|
|
--use-fftw --no-fftw (enable/disable use of FFTW)
|
|
--use-artoolkit --no-artoolkit (enable/disable use of ARTOOLKIT)
|
|
--use-opencv --no-opencv (enable/disable use of OPENCV)
|
|
--use-directcam --no-directcam (enable/disable use of DIRECTCAM)
|
|
--use-vision --no-vision (enable/disable use of VISION)
|
|
--use-gtk2 --no-gtk2 (enable/disable use of GTK2)
|
|
--use-npapi --no-npapi (enable/disable use of NPAPI)
|
|
--use-mfc --no-mfc (enable/disable use of MFC)
|
|
--use-wx --no-wx (enable/disable use of WX)
|
|
--use-fltk --no-fltk (enable/disable use of FLTK)
|
|
--use-rocket --no-rocket (enable/disable use of ROCKET)
|
|
--use-awesomium --no-awesomium (enable/disable use of AWESOMIUM)
|
|
--use-carbon --no-carbon (enable/disable use of CARBON)
|
|
--use-cocoa --no-cocoa (enable/disable use of COCOA)
|
|
--use-x11 --no-x11 (enable/disable use of X11)
|
|
--use-xf86dga --no-xf86dga (enable/disable use of XF86DGA)
|
|
--use-xrandr --no-xrandr (enable/disable use of XRANDR)
|
|
--use-xcursor --no-xcursor (enable/disable use of XCURSOR)
|
|
--use-pandatool --no-pandatool (enable/disable use of PANDATOOL)
|
|
--use-pview --no-pview (enable/disable use of PVIEW)
|
|
--use-deploytools --no-deploytools (enable/disable use of DEPLOYTOOLS)
|
|
--use-skel --no-skel (enable/disable use of SKEL)
|
|
--use-pandafx --no-pandafx (enable/disable use of PANDAFX)
|
|
--use-pandaparticlesystem --no-pandaparticlesystem (enable/disable use of PA
|
|
NDAPARTICLESYSTEM)
|
|
--use-contrib --no-contrib (enable/disable use of CONTRIB)
|
|
--use-sse2 --no-sse2 (enable/disable use of SSE2)
|
|
--use-neon --no-neon (enable/disable use of NEON)
|
|
--use-touchinput --no-touchinput (enable/disable use of TOUCHINPUT)
|
|
|
|
--nothing (disable every third-party lib)
|
|
--everything (enable every third-party lib)
|
|
--directx-sdk=X (specify version of DX9 SDK to use: jun2010, aug2009, mar200
|
|
9, aug2006)
|
|
--platform-sdk=X (specify MSPlatSdk to use: win71, win61, win60A, winserver20
|
|
03r2)
|
|
--use-icl (experimental setting to use an intel compiler instead of MS
|
|
VC on Windows)
|
|
|
|
Makepanda shows you all the available options, not all of which may be
|
|
relevant to your operating system. For example, makepanda can build a
|
|
plugin for 3D Studio Max. However, there is no 3D Studio Max for
|
|
Linux, so the options --use-max# are irrelevant under Linux.
|
|
|
|
|
|
SELECTING PANDA FEATURES
|
|
|
|
Panda contains a large number of optional features. For example, if
|
|
panda is compiled with PNG support, then panda will be able to load
|
|
textures from PNG image files.
|
|
|
|
Some of these features require the use of bulky third-party libraries.
|
|
For example, 'helix' is a streaming video library from real networks.
|
|
If you do not plan on using streaming video in your 3D world, then
|
|
you may be interested in compiling panda without helix. This will
|
|
shave several megabytes off of the panda libraries.
|
|
|
|
To select panda features, you need to specify one of two different
|
|
command-line options:
|
|
|
|
makepanda --everything
|
|
makepanda --nothing
|
|
|
|
You can follow either of these with a list of specific exceptions.
|
|
For example, you can say:
|
|
|
|
makepanda --everything --no-helix --no-openssl
|
|
makepanda --nothing --use-zlib --use-png
|
|
|
|
If a certain package could not be found, it is automatically
|
|
omitted and a warning message is shown when running makepanda.
|
|
|
|
Please note that if you abort makepanda, and invoke it again, it
|
|
will continue where it left off the last time you ran it. However,
|
|
if you change the combination of selected features, the compilation
|
|
process may start from scratch the next time you invoke makepanda.
|
|
|
|
|
|
USING YOUR OWN LIBRARIES
|
|
|
|
Panda3D uses a number of third-party libraries: libpng, libjpeg,
|
|
openssl, etc. If you are using a Unix variant, many of these
|
|
libraries come with the operating system. Panda3D will use these
|
|
OS-supplied libraries where possible, so if your OS comes with a copy
|
|
of libpng, Panda3D uses that.
|
|
|
|
For convenience, the panda source distribution includes precompiled
|
|
copies of many of the third-party libraries. You will find these
|
|
libraries in a subdirectory labeled 'thirdparty'. If you are happy
|
|
with the versions we have provided, then you don't need to do anything
|
|
special.
|
|
|
|
If you are not satisfied with the versions of the libraries we have
|
|
provided, you may supply your own versions. To do so, duplicate the
|
|
'thirdparty' tree, substitute your own libraries, and then use
|
|
the --thirdparty option to point makepanda to your libraries.
|
|
|
|
|
|
THE EDIT-COMPILE-DEBUG CYCLE
|
|
|
|
A small caution: if you invoke 'makepanda' with one set of options,
|
|
and then invoke 'makepanda' using the exact same set of options, the
|
|
second time will be fast. It will see that everything has already
|
|
been built, and it will do no actual compilation. As a result,
|
|
makepanda can be used as part of an edit-compile-debug cycle.
|
|
|
|
However, if you invoke makepanda with a *different* set of options,
|
|
makepanda may need to recompile and relink a lot of files. This is
|
|
because several of those options change the values of '#define'
|
|
headers, so changing the options requires a recompilation.
|
|
|
|
It is all too easy to accidentally invoke 'makepanda' with the wrong
|
|
options, thereby triggering an hour-long recompilation. To avoid this
|
|
situation, we recommend that you write a short script containing the
|
|
options you intend to use regularly. For example, I regularly compile
|
|
panda without eigen. I have a very short Windows BAT file called
|
|
"mkp.bat" that looks like this:
|
|
|
|
@echo off
|
|
makepanda --everything --no-eigen
|
|
|
|
This helps me avoid accidentally typing makepanda with the wrong
|
|
options.
|
|
|
|
|
|
BUILDING A WINDOWS INSTALLER
|
|
|
|
Under Windows, makepanda can create an executable installer. All you
|
|
need to do is pass the --installer option to makepanda. The makepanda
|
|
option --lzma will cause the installer to be compressed with LZMA
|
|
compression, which is better, but it takes a long time to do the
|
|
compression.
|
|
|
|
|
|
BUILDING A LINUX DEB OR RPM PACKAGE
|
|
|
|
Under Linux, passing the --installer option to makepanda will
|
|
cause makepanda to try to build a deb or rpm package. For this to
|
|
work, you have to be using a Linux distribution that includes either
|
|
the dpkg-deb or rpmbuild binary.
|
|
|
|
|
|
BUILDING A MACOSX DMG PACKAGE
|
|
|
|
Under Mac OSX, you can also use the --installer option, which will
|
|
generate a .dmg archive containing the Panda3D installation, which
|
|
needs to be placed in your /Applications/ directory.
|
|
The .dmg also contains a shell script that automatically sets up the
|
|
library and python search paths in your .bash_profile file so you don't
|
|
have to do that yourself every time you want to use Panda3D.
|
|
|
|
|