panda3d/doc/build
2004-07-27 14:35:11 +00:00

182 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# This script is an experiment. It is designed to automate the
# Panda3D build process for users who have Cygwin installed on their
# Windows machine. It may also work for users on a Linux or Unix
# machine.
# You must still set up your Config.pp file and Config.prc files as
# described in the INSTALL document before running this script.
# As with any automatic process, this script may not work in every
# environment. An effort has been made to make the script as
# trouble-free as possible, but things can always go wrong. If you
# have difficulty running this script, you are encouraged to follow
# the step-by-step instructions in the INSTALL document to build
# Panda3D by hand.
usage="build [\"\"|new|uninstall|install|clean|only|genpy [\"\"|dtool|panda|direct|<relative path>] ]"
usage=$(cat <<-EOS
Usage: ./$(basename $0) [ mode [ module [ package ] ] ]
[Be sure to cd to the panda3d directory first.]
mode ""|new|uninstall|install|clean|only|genpy|--help
module ""|dtool|panda|direct|<relative path>
package one of the */src/* directories.
Examples:
./build new
./build install
./build install panda
./build clean
./build clean panda
./build genpy
./build only panda express
./build quick panda express
EOS
)
mode=$1
module=$2
base=$(pwd)
wantGenPy=1
#trap "exit" INT
if [ "$mode" == "--help" ]; then
echo "$usage"
exit
fi
echo -e "\nSetting up build environment\n"
if [ -f ./build_env ]; then
source ./build_env || exit
fi
modules="dtool panda pandatool direct $modules"
if [ "$module" != "" ]; then
modules="$module"
fi
case "$mode" in
( only )
cd $base/$module || exit
ppremake || exit
make uninstall install || exit
modules_ppremake=""
modules_clean=""
modules_uninstall=""
modules_install=""
;;
( quick )
cd $base/$module/src/$3 || exit
make || exit
cd $base/$module || exit
make install || exit
wantGenPy=0
modules_ppremake=""
modules_clean=""
modules_uninstall=""
modules_install=""
;;
( new )
# ...build the newest version of the code:
echo -e "\nUpdating cvs\n"
cd "$base" || exit
./cvs_update || exit
cd "$base" || exit
# This next command is allowed to fail (no || exit):
echo -e "\nBuilding tags file\n"
ctags -nR -h '+.I' --langmap='c:+.I' -h '+.T' --langmap='c:+.T' --fields=fmisS
modules_ppremake=$modules
modules_clean="direct $modules_clean"
modules_uninstall=$modules
modules_install=$modules
;;
( ppremake )
wantGenPy=0
modules_ppremake=$modules
modules_clean=""
modules_uninstall=""
modules_install=""
;;
( clean )
wantGenPy=0
modules_ppremake=$modules
modules_clean=$modules
modules_uninstall=""
modules_install=""
;;
( uninstall )
wantGenPy=0
modules_ppremake=$modules
modules_clean=""
modules_uninstall=$modules
modules_install=""
;;
( install )
modules_ppremake=$modules
modules_clean=""
modules_uninstall=$modules
modules_install=$modules
;;
( "" )
modules_ppremake=$modules
# Some modules are small enough that we clean them for good measure:
modules_clean="direct $modules_clean"
modules_uninstall=$modules
modules_install=$modules
;;
( genpy )
wantGenPy=1
modules_ppremake=""
modules_clean=""
modules_uninstall=""
modules_install=""
;;
( * )
echo -e "\nThat mode is not recognized ($mode)"
echo "$usage"
exit 1
;;
esac
echo " modules_ppremake =$modules_ppremake"
echo " modules_clean =$modules_clean"
echo " modules_uninstall =$modules_uninstall"
echo " modules_install =$modules_install"
for i in $modules_ppremake; do
echo -e "\nStarting Ppremake of $i\n"
cd "$base/$i" || exit
ppremake $ppremake_args || exit
done
for i in $modules_clean; do
echo -e "\nStarting Clean of $i\n"
cd "$base/$i" || exit
make clean || exit
done
for i in $modules_uninstall; do
echo -e "\nStarting Uninstall of $i\n"
cd "$base/$i" || exit
make uninstall || exit
done
for i in $modules_install; do
echo -e "\nStarting Install (build) of $i\n"
cd "$base/$i" || exit
make install || exit
done
if (($wantGenPy)); then
# Generate Python code:
echo "Generating Python/C++ interface code"
#cd $base || exit
genPyCode || exit
fi
echo "done"