diff --git a/doc/build b/doc/build new file mode 100755 index 0000000000..59d6a38c00 --- /dev/null +++ b/doc/build @@ -0,0 +1,161 @@ +#!/bin/bash + +usage="build [\"\"|new|uninstall|install|clean|only|genpy [\"\"|dtool|panda|direct|] ]" +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| + 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 ) + modules_ppremake=$modules + modules_clean="" + modules_uninstall="" + modules_install="" + ;; +( clean ) + modules_ppremake=$modules + modules_clean=$modules + modules_uninstall="" + modules_install="" + ;; +( uninstall ) + 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 ) + 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 || 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" +