#!/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 ) 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"